[英]DSL Integration Flows with retry mechanism and how it works
我已经实现了一个重试机制,该机制基于以下内容运行良好:
https://github.com/spring-projects/spring-integration-samples/issues/237
应用程序使用来自 kafka 的事件,转换这些事件并将它们作为 HTTP 请求发送到远程服务,因此它在发送 HTTP 请求的集成流中实现了重试机制。
我担心在临时故障(网络故障)期间以与来自 kafka 的相同顺序将请求发送到远程服务以避免压倒一切,但幸运的是,看起来顺序保持不变,请在这里保持诚实。
似乎在重试过程中,所有进入的事件都被“搁置”,一旦远程服务在最后一次尝试之前备份,所有事件都会被发送。
我想在这里了解两件事:
我想我可能会使用 ExecutorChannel 以便可以并行处理事件,但是这样做我将无法保持事件的顺序。
谢谢。
你的假设是正确的。 重试在同一个线程中完成,并为下一个事件阻塞,直到发送成功或重试用尽。 而且它实际上是在同一个 Kafka 消费者线程中完成的,因此在重试完成之前不会从主题中提取新记录。
将逻辑转移到新线程中是不正确的架构,例如使用ExecutorChannel
,因为 Kafka 基于不能乱序完成的偏移提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.