分布式ActiveMQ与Camel

Pau*_*ell 17 activemq-classic apache-camel apache-servicemix

我正在学习ActiveMQ和Camel,目标是创建一个像这样工作的小原型系统:

alt text http://www.paulstovell.com/get/stackoverflow-questions/Queues.png(big )

当订单放入订单系统时,会向任何订户(发布/订阅系统)发送消息,他们可以在处理订单时发挥作用.该订单,航运进销存应用程序都有自己的ActiveMQ安装,因此,如果任何三个系统都处于离线状态,其他人可以继续工作.有些东西负责在ActiveMQ安装之间移动消息.

如果Apache Camel位于同一个ActiveMQ实例上,那么让Apache Camel通过路由将消息从一个队列移动到另一个队列非常容易.所以这适用于管理订阅队列.

接下来的挑战是将消息从一个ActiveMQ实例推送到另一个实例,这就是我不确定接下来要看什么的位置.

  1. Camel可以在不同的ActiveMQ安装之间路由吗?(如果它们在不同的机器上,我无法弄清楚JMI端点URI是什么).
  2. 我知道ActiveMQ具有存储和转发功能.这是我用于在订单和发货/发票之间移动消息的方法吗?
  3. 或者这就是Apache ServiceMix要解决的问题?

bsn*_*der 20

这是一个非常简单的异步,事件驱动的应用程序,非常适合ActiveMQ和Camel.

实际上,您不会将消息从一个ActiveMQ实例显式移动到另一个ActiveMQ实例.它的工作方式是使用所谓的经纪人网络.在你的情况下,你有三个经纪人:ActiveMQ-purple,ActiveMQ-green和ActiveMQ-blue.ActiveMQ-purple使用ActiveMQ-green和ActiveMQ-blue创建单向代理网络.这允许ActiveMQ-purple根据消费者需求将消息存储和转发到ActiveMQ-green和ActiveMQ-blue.

订单应用程序接受ActiveMQ-purple上的订单队列上的订单.Orders应用程序使用Camel来使用和处理消息,以确定它是发票消息还是发货消息.Camel将消息路由到ActiveMQ-purple上的开票队列或送货队列.

消费者需求来自Invoicing应用程序和Shipping应用程序.Invoicing使用Camel消耗来自ActiveMQ-green上的发票队列的消息.Shipping应用程序使用Camel来消耗ActiveMQ-blue上的发货队列中的消息.由于代理网络以及ActiveMQ-green.invoicing队列和ActiveMQ-blue.shipping队列的消费者需求,消息将从ActiveMQ-purple转发到适当的代理和队列.无需将消息显式路由到特定代理.

我希望这回答了你的问题.如果你有,请告诉我.

布鲁斯