如何在带有 Zookeeper 和 ActiveMQ 的集群环境中使用 Apache Camel

How to use Apache Camel in Clustered Environment with Zookeeper and ActiveMQ

我有 3 个服务器(1 个主服务器,2 个从服务器)。每个都安装了 Zookeeper(最新版本)和 ActiveMQ(最新版本,但不是 artemis)。 ActiveMQ 配置为基于 Zookeeper 节点的 Replicated Level-DB。

现在我想使用 Apache Camel 进行消息路由。

骆驼路线应该位于何处?我写了一个 Spring Boot App 但我想像 ActiveMQ 一样进行故障转移。

所以我阅读了有关将 jar 放入 activeMQ lib 目录并设置 XML 配置 Enterprise Integration Patterns

另一种方法是使用 Camel 组件

有没有人以前遇到过这个问题并想分享解决方案?

呃哦,正如评论中提到的,注意 Level DB 的东西,因为它已弃用。仅在彻底测试后才使用它!在我们的测试中,运行宁相当不错。但是,无论出于何种原因,当级别 DB 损坏时,数据就会丢失。 我们无法恢复关卡数据库。不太适合制作。

并且甚至不要考虑基于 NFS 的解决方案。 NFS 真的不适合这个,我们在测试中遇到了很多问题。例如,我们经常管理它有多个主人或根本没有主人。所以我们放弃了。

最终我们使用了普通的单一代理,因为解决master/slave或复制设置中的问题的复杂性可能非常高。尽管我们 "single point of failure",但我们几乎从未发生过任何计划外停机。

但是,很多人告诉我,经纪人网络 可以很好地进行冗余设置。至少其中一个在谈论一个非常大的环境。

好吧,这并不是您问题的真正答案,不是吗?

您可以将 Camel 路由放在代理 XML 配置 旁边,然后将这些路由 运行 放在 ActiveMQ 进程中。 See here for an example

如果您想为 运行 Broker 构建一个 Spring 启动应用程序,您只需要使 Camel 上下文在 Spring[=34 中可用=] 它应该被捡起。