JMS AUTO_ACKNOWLEDGE模式如何具有重复消息

时间:2014-09-18 12:14:14

标签: jms spring-jms

我正在使用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方法是否是线程安全的?

任何人都可以提供一些可能出现问题的提示吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案。在" AUTO_ACKNOWLEDGE"中没有偏离JMS行为。模式,客户端只收到一条消息。 问题是有两个" DefaultMessageListenerContainer"在特定时刻被调用,然后有两条消息开始到达。