Spring integration 使用jms处理错误消息:消息驱动通道适配器

Spring integration 使用jms处理错误消息:消息驱动通道适配器,spring-integration,Spring Integration,我今天看到一个问题。我在队列中丢弃了几条消息,其中一条消息在ServiceActivator中抛出错误。errorred消息继续一次又一次地尝试,而队列中没有其他消息正在处理。是否有任何方法可以在下面的配置中设置,以将错误消息发送到队列末尾消息。(例如,如果队列深度为1000,则错误消息将位于1000位置) 请指教 谢谢Gary…很遗憾,我们无法更改任何MQ配置 我尝试了以下方法,并将为errorRetryChannel添加服务激活器 <int:service-activator in

我今天看到一个问题。我在队列中丢弃了几条消息,其中一条消息在ServiceActivator中抛出错误。errorred消息继续一次又一次地尝试,而队列中没有其他消息正在处理。是否有任何方法可以在下面的配置中设置,以将错误消息发送到队列末尾消息。(例如,如果队列深度为1000,则错误消息将位于1000位置)


请指教

谢谢Gary…很遗憾,我们无法更改任何MQ配置

我尝试了以下方法,并将为errorRetryChannel添加服务激活器

<int:service-activator input-channel="jmsInChannel" ref="messageService">
         <int:request-handler-advice-chain>
            <int:retry-advice max-attempts="4" recovery-channel="errorRetryChannel">
                <int:exponential-back-off initial="1000" multiplier="5.0" maximum="60000" />
            </int:retry-advice>
    </int:request-handler-advice-chain>
    </int:service-activator>

通常,您会将代理配置为在多次尝试后将“有毒”消息转储到死信队列

如果您不能做到这一点,您可以添加一个恢复程序和一个可以记录并以其他方式处理错误消息的恢复程序


自定义恢复程序可以在队列末尾重新查询消息,但您可能希望丢弃不可恢复的消息。

只想在文档中更新您的信息,其中有一个int:retry advice id=“retrier”字段,但集成不允许这样做。没有这一点,我能够运行应用程序没有错误。
<int:service-activator input-channel="jmsInChannel" ref="messageService">
         <int:request-handler-advice-chain>
            <int:retry-advice max-attempts="4" recovery-channel="errorRetryChannel">
                <int:exponential-back-off initial="1000" multiplier="5.0" maximum="60000" />
            </int:retry-advice>
    </int:request-handler-advice-chain>
    </int:service-activator>