如何正确地将 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 问题,我们会考虑我们能做些什么。
我是 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 问题,我们会考虑我们能做些什么。