繁体   English   中英

具有重试机制的 DSL 集成流程及其工作原理

[英]DSL Integration Flows with retry mechanism and how it works

我已经实现了一个重试机制,该机制基于以下内容运行良好:

https://github.com/spring-projects/spring-integration-samples/issues/237

应用程序使用来自 kafka 的事件,转换这些事件并将它们作为 HTTP 请求发送到远程服务,因此它在发送 HTTP 请求的集成流中实现了重试机制。

我担心在临时故障(网络故障)期间以与来自 kafka 的相同顺序将请求发送到远程服务以避免压倒一切,但幸运的是,看起来顺序保持不变,请在这里保持诚实。

似乎在重试过程中,所有进入的事件都被“搁置”,一旦远程服务在最后一次尝试之前备份,所有事件都会被发送。

我想在这里了解两件事:

  1. 我的假设是否正确? 这是默认情况下重试机制的工作方式吗?
  2. 由于完成当前流程执行所需的时间,我担心事件会返回(或堆叠)。 这里有什么我应该考虑的吗?

我想我可能会使用 ExecutorChannel 以便可以并行处理事件,但是这样做我将无法保持事件的顺序。

谢谢。

你的假设是正确的。 重试在同一个线程中完成,并为下一个事件阻塞,直到发送成功或重试用尽。 而且它实际上是在同一个 Kafka 消费者线程中完成的,因此在重试完成之前不会从主题中提取新记录。

将逻辑转移到新线程中是不正确的架构,例如使用ExecutorChannel ,因为 Kafka 基于不能乱序完成的偏移提交。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM