【问题标题】:Spring Boot - Camel how to handle multiple processesSpring Boot - Camel 如何处理多个进程
【发布时间】:2018-06-27 16:20:03
【问题描述】:
我有 3 个单独运行的 Spring Boot - Camel 应用程序。我需要链接这些进程,比如在进程 A 完成时它应该启动进程 B,然后一旦进程 B 完成,它应该继续进程 C。如果任何进程在两者之间失败,进程链应该重试失败的一个,然后继续执行到下一个。此外,在流程 A 中,如果路线中的任何步骤出现任何故障,那么我还需要重试并从中间步骤开始。谁能帮我实现这个场景?
【问题讨论】:
标签:
spring-boot
apache-camel
spring-camel
multiple-processes
【解决方案1】:
你所描述的听起来像Pipes and Filters pattern。
在这种模式下,您的 3 个应用程序将是“过滤器”,如果您在游戏中添加像 ActiveMQ 这样的 消息代理,您会得到介于两者之间的“管道”(消息队列)和非常好的解耦。
这意味着您的应用程序从一个队列消费以处理新消息并生成到另一个队列以将消息移交给下一个处理步骤。对于重试,您可以使用 Camel 错误处理(重试失败的路由步骤)或带有本地 JMS 事务的 broker redelivery 机制(重试整个路由)。