如何正确地将 RetryAdvice 添加到 Jms.messageDriverChannelAdapter

How correctly add RetryAdvice to Jms.messageDriverChannelAdapter

我是 Spring Integration DSL 的新手,我需要向现有 IntegrationFlow 添加重试和恢复。它从 Jms.messageDriverChannelAdapter 获取数据并通过不同的渠道发送。我想为整个流程添加 RequestHandlerRetryAdvice。

我的想法是将它添加到适配器中,但它似乎只支持 ErrorChannel,不支持 Advices & Retries 等。我最终将 Jms.messageDriverChannelAdapter 之后的整个流程包装在带有建议和 .requireReply(false) 的 .gateway 中。感觉就像一个黑客,但我找不到更好的方法来做到这一点。有没有更好的方法来处理这种情况?

与 Spring AMQP 的侦听器容器不同,JMS 不提供将 Advice 链注入其中的挂钩,因此,我们真的没有选择和解决方法。 RequestHandlerRetryAdvice.gateway() DSL 是个不错的主意。关键是 RequestHandlerRetryAdvice 仅适用于特定的 handleRequestMessage() 方法,不会传播到下游。将流程包装到上述 handleRequestMessage() 的网关调用中是可行的方法。

我认为我们可以在 JmsMessageDrivenEndpoint 上提出解决方案,用注入的 Advice 链包装一个内部侦听器,其中一个可能是 RetryOperationsInterceptor.

请提出 GH 问题,我们会考虑我们能做些什么。