我是Spring Integration DSL的新手,我需要在现有IntegrationFlow上增加重试和恢复功能。它从Jms.messageDriverChannelAdapter接收数据,并通过不同的通道发送数据。我想为整个流程添加RequestHandlerRetryAdvice。
我的想法是将其添加到适配器中,但是它似乎仅支持ErrorChannel,而没有建议和重试等。我最终将Jms.messageDriverChannelAdapter之后的整个流程包装在带有建议和.requireReply(false)的.gateway中。感觉就像是骇客,但我找不到更好的方法。有什么更好的方法来应对这种情况?
答案 0 :(得分:1)
与Spring AMQP的侦听器容器不同,JMS并没有提供向其注入Advice
链的钩子,因此,我们确实没有选择和解决方法。 RequestHandlerRetryAdvice
和.gateway()
DSL并不是一个坏主意。关键是RequestHandlerRetryAdvice
仅适用于特定的handleRequestMessage()
方法,而不会传播到下游。将流程包装到来自提到的handleRequestMessage()
的网关调用中是可行的方法。
我认为我们可以在JmsMessageDrivenEndpoint
上提出解决方案,以使用注入的Advice
链来包装内部侦听器,其中一个可能是RetryOperationsInterceptor
。
请提出一个GH问题,我们将思考我们能做什么。