Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring MQ消息在目标、回退和死信队列之间保持循环_Spring_Ibm Mq_Dead Letter - Fatal编程技术网

Spring MQ消息在目标、回退和死信队列之间保持循环

Spring MQ消息在目标、回退和死信队列之间保持循环,spring,ibm-mq,dead-letter,Spring,Ibm Mq,Dead Letter,我有一个队列Q1,其中回退队列为QB,回退阈值为3。我正在研究处理有毒消息的各种可能性,因此每当我从队列中读取消息并不断轮询队列时,我都会使我的应用程序抛出异常。 Q1的深度为15,QB为5,DLQ为5。 对于第一个场景,我在Q1中输入了7条消息并启动了应用程序。正如预期的那样,当回退计数为3时,每条消息被回滚到队列并移动到回退队列。在第六条消息中,由于QB已满,消息将移动到DLQ,第七条消息也是如此。工作很有魅力 对于第二个场景,我需要知道当回退队列和DLQ都已满时会发生什么情况,我输入12条

我有一个队列Q1,其中回退队列为QB,回退阈值为3。我正在研究处理有毒消息的各种可能性,因此每当我从队列中读取消息并不断轮询队列时,我都会使我的应用程序抛出异常。 Q1的深度为15,QB为5,DLQ为5。 对于第一个场景,我在Q1中输入了7条消息并启动了应用程序。正如预期的那样,当回退计数为3时,每条消息被回滚到队列并移动到回退队列。在第六条消息中,由于QB已满,消息将移动到DLQ,第七条消息也是如此。工作很有魅力

对于第二个场景,我需要知道当回退队列和DLQ都已满时会发生什么情况,我输入12条消息并启动应用程序,对于前10条消息,一切正常,回退5条,DLQ 5条。接下来,它抛出DLQ已满,这是显而易见的

但我可以在MQ explorer中观察到的是,12条消息在Q1、QB和DLQ之间无限循环,当我自己停止应用程序时,所有消息都在Q1中结束,就像我启动应用程序之前一样

完全困惑,谷歌搜索了很多,但没有发现类似的东西

谁能指出我做错了什么,或者这个拼图缺少了什么部分


提前感谢。

基于回退队列的使用,我假设您正在使用IBM MQ classes for JMS API。您能否确认是否正在使用异步消息侦听器?会议进行了吗?这是一个提交问题吗?如何确定消息在队列之间循环。在您描述的最后两条消息无法转到QB或DLQ的情况下,它们将被放回Q1,并且读数将选择它们备份,并且仍然存在有毒消息问题。你能展示你的代码的更多细节和你的应用程序是如何设置的吗?我正在使用SpringJMS模板。它是同步的。我只是修改了我的应用程序,以便在输入源从队列读取消息时手动抛出异常。这是愚蠢的,但我只是在模仿一个有毒消息场景。我正在测试回退队列在各种情况下的性能。有一种情况,我修改了代码,仅当负载中有“有毒”文本时才抛出手动异常。所以我输入了4条信息,里面有文字“毒药”。这是正常的。接着是10条带有“毒药”字样的信息。这次发生的只是队列之间循环的最后10条消息。所以我想知道这和提交有什么关系吗???因为所有“毒药”都被击退了,但只有第五个被击退。我不太了解MQ中事务的工作原理及其会话。我确实认为它与提交有关。你提到了Spring,所以我添加了这个标签,有一些用户(@GaryRussell和@ArtemBilan)为Spring的问题提供了很好的答案。非常感谢你花时间在这个@JoshMc上