当接收器不可用时 JMS 消息丢失

问题描述 投票:0回答:1

我正在使用 JMS 进行消息传递。当发送者和接收者都可用时,我成功收到了消息。但是,当我关闭接收器并重新启动时,接收器不会再次收到排队的消息。我需要做任何配置吗? 我已按如下方式增加了生存时间,以避免会话过期。

这就是我的发件人代码的样子。

Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createTopic(topic);
MessageProducer producer = session.createProducer(destination);
producer.setTimeToLive(18000000L);
TextMessage message = session.createTextMessage(customMessage.getContent());
producer.send(message);
java jms messaging receiver subscriber
1个回答
3
投票

您所观察到的行为是预期的。由于您要将消息发送到 JMS topic,您将受到发布/订阅语义的约束。发布/订阅语义规定消息仅放置在有效的订阅中。当您的订阅者离线时,它在代理上没有有效的订阅来接收消息,因此它将错过离线时发送给它的消息。

您可以使用持久订阅者在订阅者离线时接收消息,也可以使用传统的 JMS 队列

© www.soinside.com 2019 - 2024. All rights reserved.