ColdFusion中的ActiveMQ MOM与远程方法与SOA架构的共享数据库相比?

时间:2011-06-28 23:27:36

标签: architecture coldfusion soa activemq mom

我们正处于建筑十字路口。

之前的系统使用了共享DB来进行彼此之间的通信,但我们希望摆脱cfschedule轮询延迟。所有子系统都用CF编写。

我正在研究MOM,很可能是ActiveMQ,因为CF附带了一个事件网关,或基本的远程方法调用。附带问题:通过http使用*.cfc?method=会更快,然后将它们作为SOAP Web服务调用吗?

我们还希望能够记录失败的尝试,查询实际状态,并在一段时间后自动重试。 MOM / ActiveMQ符合我们的要求吗?我们应该实现自己的队列吗?

另外,我们将使用CF标准,因此在事件网关中限制为1个线程和2个自定义线程。

任何建议或建议都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

鉴于您要求使用ActiveMQ或远程方法调用替换共享数据库,我假设您的用例实际上是消息传递与应用程序共享状态;共享数据库显然是在多个应用程序之间进行共享状态的好方法。您的描述也让我觉得您的应用程序正在向其他应用程序发送通知或事件,因为发生了一些有趣的事情......

远程方法调用在您调用单个应用程序时起作用,您需要立即响应,并且您知道其他应用程序可用(即运行)。如果在需要发送消息时接收应用程序可能没有运行,则许多系统发现这种方法具有挑战性。如果您当前或将来需要发送到多个应用程序,远程方法调用也具有挑战性,特别是如果发送应用程序未知未来的接收器。

MOM,特别是ActiveMQ,是一种可靠且异步向一个或多个接收器发送消息的好方法。发送应用程序为ActiveMQ提供消息,然后继续执行其工作(不会阻止您的应用程序执行更多工作)。消息接收者在连接到ActiveMQ时会收到消息 - 也就是说,如果消息发送时它们的连接速度与远程方法一样快;如果接收器稍后连接,他们将在连接时接收(无轮询)。 ActiveMQ确保消息安全,直到接收方确认收到。

如果您要发送事件,使用像ActiveMQ这样的消息传递系统真的很好,因为您可以使用名为发布/订阅的范例,其中消息(事件)可以传递给多个接收者。这些接收器对于发送应用程序是未知的;他们只需要知道如何连接到ActiveMQ。这种范例是解耦应用程序的好方法;您的应用程序发送有趣的事件,其他可以从知道发生的事件中受益的应用程序将来可以连接到ActiveMQ ......

Gregor Hohpe的Enterprise Integration Patterns网站是许多集成模式的重要资源,包括发布/订阅。有关ActiveMQ的更多信息,请访问Apache ActiveMQ或FuseSource's ActiveMQ站点

希望有所帮助,

斯科特