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