Spring 集成在 Serviceactivator 中使用指数退避算法实现对失败消息的重试

Spring integration Implement retry for a failed message with exponential backoff in Serviceactivator

我正在处理一项任务,该任务需要在读取请求中的消息后message-channel向外部肥皂服务客户端发送请求 ](Queuechannel),原始来源为 ibm mq
消息通道使用消息驱动适配器从 ibm mq 获取数据。
消息通道由 poller 轮询(结合 soap 服务供应商 maxmessagesperchannel 要求的限制),将这些消息发送到我的服务激活器。
Serviceactivator(soap 客户端)依次连接到 soap 服务,并在根据消息中的 header 值进行一些逻辑处理后获得响应。
当我收到某些错误代码时,我需要重新处理此特定消息。
我从这个外部肥皂服务供应商那里得到要求,我们以指数方式重试或重新发送此消息。例如,如果在 1 秒、1 米和 1 小时后重试时发生连续失败,则 1 秒、1 分钟、1 小时。
如果 1 小时后重试失败,我们将其手动检查 queue 目前不关心。
要重试我们在 spring 集成中实现 RequestHandlerCircuitBreakerAdvice 的请求,并抛出触发 circuitbreaker 并动态更改 circuitbreakers [=20] 的自定义 reprocessingexception (runtimex) =] 值,但它并没有解决我们的目的。
我们如何确保我们失败的请求只是在电路打开后重试的请求。
另一个问题是 pollercircuitbreaker 打开时持续运行导致其他消息也失败。
所有失败的消息都转到默认 errorChannel 以获取更多信息。? 里特什

使用 retry adviceExponentialBackOffPolicy 而不是断路器。