Spring integration Spring集成-设计-防止无限处理循环

Spring integration Spring集成-设计-防止无限处理循环,spring-integration,Spring Integration,我有一个spring集成流,其中处理器(调度)顺序地从队列(jms)读取消息并尝试处理。如果处理器发现在另一个事件完成之前无法处理该消息,它会将该消息发送回原始队列并稍后尝试处理 如果它只是继续发送无法处理的消息,返回到队列,它将创建一个无限循环 所以我需要保留它们,直到我读完队列中已经存在的所有消息。并在将所有现有消息发送到队列之前,在读取所有现有消息时触发释放。我该怎么办 请注意,我不想聚合这些消息,只是暂时保存它们,不知何故。还要注意,我的处理器计划读取消息(不是消息驱动的) 在这种情况下

我有一个spring集成流,其中处理器(调度)顺序地从队列(jms)读取消息并尝试处理。如果处理器发现在另一个事件完成之前无法处理该消息,它会将该消息发送回原始队列并稍后尝试处理

如果它只是继续发送无法处理的消息,返回到队列,它将创建一个无限循环

所以我需要保留它们,直到我读完队列中已经存在的所有消息。并在将所有现有消息发送到队列之前,在读取所有现有消息时触发释放。我该怎么办


请注意,我不想聚合这些消息,只是暂时保存它们,不知何故。还要注意,我的处理器计划读取消息(不是消息驱动的)

在这种情况下,您必须确认队列中的这些消息,并使用
JmsTemplate
(或
JmsSendingMessageHandler
)将它们重新发送回队列

具有将失败消息返回到队列头的出列功能。这就是您如何一次又一次地看到它,而不会到达其他消息的方式(您也可以通过并发来做到这一点)


使用在发生故障时将消息重新发送回队列的方法,可以将它们放在队列的尾部。因此,在处理其他现有消息之后,“坏”消息将稍后可用。

您还可以将它们发布到其他队列,并定期运行任务将它们移回原始队列。我就是这么做的。只需同步地将不可处理的MSG保留在temp Q中,当我完成批处理后,启动另一个任务,将它们移回保留Q.Thnx中,以便像往常一样输入你们两个。