我正在执行一项任务,该任务要求向外部肥皂服务客户端发送请求,该请求是在请求消息通道(队列通道)中读取消息且原始来源为{{ 1}}。
消息通道使用消息驱动适配器从ibm mq
获取数据。
消息通道由ibm mq
进行轮询(结合了poller
肥皂服务供应商要求的限制),并将这些消息发送到我的服务激活器。
maxmessagesperchannel
(soap客户端)依次连接到soap服务,并根据Message中的标头值做出一些逻辑后得到响应。
当我收到某些错误代码时,我需要重新处理此特定消息。
我要求该外部肥皂服务供应商以指数方式重试或重新发送此消息,例如1s,1分钟,1小时,如果在1s,1m和1小时后重试发生顺序故障。
如果1小时后重试失败,我们会将其放入当前不需关注的手动检查队列。
为了重试这些请求,我们在春季集成中实现了Serviceactivator
并抛出了一个自定义RequestHandlerCircuitBreakerAdvice
(runtimex),该触发器触发reprocessingexception
并动态更改circuitbreaker
circuitbreakers
的值,但是不能解决我们的目的。
我们如何确保失败的请求只是电路断开后重试的请求。
还有一个问题是halfOpenAfter
打开时poller
连续运行,导致其他消息也失败了。
所有失败的消息都会转到默认的circuitbreaker
,以获取更多信息。
里特什