【问题标题】:How JMS AUTO_ACKNOWLEDGE mode can have duplicate messagesJMS AUTO_ACKNOWLEDGE 模式如何产生重复消息
【发布时间】:2014-11-12 18:33:45
【问题描述】:

我正在使用 spring DefaultMessageListenerContainer 创建一个 JMS 主题客户端。下面是示例代码

DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.setDestinationName("topic.monitor");
        container.setPubSubDomain(true);
        container.setCacheLevel(3);
        container.setRecoveryInterval(2000);
        container.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
        container.setMessageListener(...)

据我所知,客户端无法在“AUTO_ACKNOWLEDGE”模式下接收重复消息(尽管消息可能会丢失)。但我随机收到重复的消息。我想知道它怎么会发生? onMessage 方法是线程安全的吗?

谁能给出一些提示,问题出在哪里?

提前致谢。

【问题讨论】:

    标签: jms spring-jms


    【解决方案1】:

    我找到了答案。在“AUTO_ACKNOWLEDGE”模式下,客户端只收到一条消息,这与 JMS 行为没有任何偏差。 问题是有两个“DefaultMessageListenerContainer”实例在某个时间被调用,然后有两条消息开始到达。

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2016-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多