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

Spring 如何正确地将RetryAdvice添加到Jms.messageDriverChannelAdapter,spring,spring-integration,spring-integration-dsl,Spring,Spring Integration,Spring Integration Dsl,我是Spring Integration DSL的新手,需要在现有IntegrationFlow中添加带恢复的重试。它从Jms.messageDriverChannelAdapter获取数据并通过不同的通道发送。我想为整个流程添加RequestHandlerRetryAdvice 我的想法是将它添加到适配器中,但它似乎只支持ErrorChannel,没有建议和重试等。最后,我用建议和.requireReply(false)将整个流程包装在.gateway中Jms.messageDriverCha

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


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

与Spring AMQP的侦听器容器不同,JMS one没有提供一个钩子来将
建议
链注入其中,因此,我们真的没有选择和解决方法。使用
RequestHandlerRetryAdvice
.gateway()
DSL并不是一个坏主意。关键是
RequestHandlerRetryAdvice
仅应用于特定的
handleRequestMessage()
方法,不会向下游传播。将流包装到所提到的
handleRequestMessage()
的网关调用中是一种方法

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


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

谢谢您的评论,我会按照您的建议做。如果您不介意,请您解释一下在这种情况下应该如何使用.replyRequired和.replyTimeout?超时时会发生什么-网关会停止执行吗?.replyRequired是否会影响其行为,比如将超时视为正常结果?