【发布时间】:2011-03-17 21:08:55
【问题描述】:
请帮助理解以下内容:
我在我的应用程序中使用CachingConnectionFactory,并在我的 jms 测试期间首次使用它来测试我的 jms 配置,例如保证交付、回滚/提交等。
我使用 Spring 的 JmsTemplate 发送,DefaultMessageListenerContainer 在交付期间。
我注意到,当使用多个测试方法按顺序运行时,这很难/不可能 示例:在测试方法 A 中,我在消息侦听器(消费者端)中抛出异常,以便发生重试。 然后运行测试 B,在方法 A 中我做了一个不同的测试,但是当我开始这个测试时,我仍然收到来自测试 A 的重试消息,这显然是我不想要的。 我在测试之间通过 jmx 清除队列,但仍然收到这些重试:(... 我进行了搜索和调试......我不完全理解为什么这些重试不断出现,即使我确定清除正确发生。也许它已经被缓存在会话中的某个地方......我不知道。有人知道吗?
我发现在测试过程中我需要使用
SingleConnectionFactory。有了这个连接工厂,重试就会消失,但我真的不明白为什么。为什么? 我知道它只使用一个连接(来自 Spring ref),并注意到它在每次发送操作后以某种方式删除了消费者,但我真的不明白这些重试会发生什么:(...有什么想法吗? (由于多线程行为并且很难在网络上找到关于它的好信息,因此很难调试) 同样使用只有一个会话缓存大小为 1 的CachingConnectionFactory也不能解决重试问题。
谢谢
【问题讨论】:
标签: spring jms activemq jmstemplate