我正在学习ActiveMQ和Camel,目的是创建一个类似以下内容的原型系统:

apache-camel - 带有 Camel 的分布式ActiveMQ-LMLPHP
(来源:paulstovell.com

(big)

在订单系统中下订单时,会将消息发送给任何订阅者(发布/订阅系统),他们可以在处理订单中发挥作用。 Orders,Shipping和Invoicing应用程序具有自己的ActiveMQ安装,因此,如果三个系统中的任何一个都脱机,则其他系统可以继续运行。某些事情负责在ActiveMQ安装之间移动消息。

如果它们位于同一ActiveMQ实例上,则使Apache Camel通过路由将消息从一个队列移动到另一个队列非常容易。因此,这适用于管理订阅队列。

下一个挑战是将消息从一个ActiveMQ实例推送到另一个实例,这是我不确定下一步要看的地方。


骆驼能否在不同的ActiveMQ安装之间路由? (如果它们位于不同的机器上,我无法弄清楚JMI端点URI是什么)。
我了解ActiveMQ具有store and forward功能。这是我用来在订单和运输/发票之间移动消息的方式吗?
还是这Apache ServiceMix意味着要解决?

最佳答案

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

实际上,您没有将消息从一个ActiveMQ实例显式移动到另一个。它的工作方式是使用所谓的network of brokers。就您而言,您将拥有三个代理:ActiveMQ紫色,ActiveMQ绿色和ActiveMQ蓝色。 ActiveMQ紫色使用ActiveMQ绿色和ActiveMQ蓝色创建单向代理网络。这使ActiveMQ紫色可以根据消费者的需求将消息存储并转发到ActiveMQ绿色和ActiveMQ蓝色。

订单应用接受ActiveMQ紫色的订单队列上的订单。 Orders应用程序使用Camel消耗和处理一条消息,以确定它是发票消息还是运输消息。骆驼将消息路由到ActiveMQ-purple上的发票队列或运输队列。

消费者需求来自“进销存”应用程序和“运输”应用程序。发票使用Camel在ActiveMQ-green上使用发票队列中的消息。运送应用程序使用Camel在ActiveMQ-blue上使用运送队列中的消息。由于存在代理网络,并且由于消费者对ActiveMQ-green.invoicing队列和ActiveMQ-blue.shipping队列有需求,因此消息将从ActiveMQ-紫色转发到适当的代理和队列。无需将消息显式路由到特定代理。

我希望这回答了你的问题。让我知道你是否还有。

布鲁斯

07-28 13:13