2017-10-19 93 views
1

我正在考虑在我们的解决方案中使用Apache camel来实现EIP模式。我们的要求是建立一个可以从故障中恢复的容错系统。Apache Camel - 从JVM崩溃中恢复

我了解Apache Camel(死信通道)提供的本地错误处理功能,它们满足我的要求。

但是,我不清楚如何配置我们的解决方案,以便我们可以从致命错误(例如JVM崩溃)中恢复。

在JVM崩溃后,让Camel应用程序从最后一个已知状态重新启动的最佳方式是什么?考虑我没有使用持久队列来维护系统状态?

我认为Spring Integration提供了配置来创建持久通道。 Apache Camel是否支持类似的配置?

回答

1

是的,您可以使用消息传递进行持久性存储,以便构建可以在JVM崩溃后仍然存在的容错应用程序。

您选择使用什么作为永久存储器。例如,您可以使用JMS消息代理(如Apache ActiveMQ/Artemis),并将Camel JMS组件用于可以使用事务JMS的路由,以确保消息不会被出队,除非它们被成功处理,所以如果JVM中途崩溃,消息仍然在代理上,并且可以在JVM启动并再次运行时重新处理。

但是,设计容错系统有多种不同的方式。 Apache Camel在这方面是开放式的,并允许你的自由。