ColdFusion中用于SOA架构的ActiveMQ MOM与远程方法与共享数据库



我们正处于架构的十字路口。

以前的系统使用共享数据库在彼此之间进行通信,但我们希望消除cfschedule轮询延迟。所有子系统都用CF编写。

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

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

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

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

考虑到您正在询问用ActiveMQ或远程方法调用替换共享DB,我假设您的用例实际上是消息传递与应用程序共享状态;共享数据库显然是在多个应用程序之间实现共享状态的好方法。你的描述也让我认为你的应用程序正在向其他应用程序发送通知或事件,因为发生了一些有趣的事情。。。

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

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

如果您正在发送事件,那么使用像ActiveMQ这样的消息传递系统是非常好的,因为您可以使用一种称为发布/订阅的范式,其中消息(事件(可以传递到多个接收器。这些接收器对于发送应用程序是未知的;他们只需要知道如何连接到ActiveMQ。这个范例是一个很好的方法去耦合你的应用程序;您的应用程序发送有趣的事件,而其他可以从知道事件发生中受益的应用程序将来可以连接到ActiveMQ。。。

GregorHohpe的EnterpriseIntegrationPatterns站点是许多集成模式(包括发布/订阅(的绝佳资源。有关ActiveMQ的更多信息,请访问Apache ActiveMQ或FuseSource的ActiveMQ站点

希望能有所帮助,

Scott

相关内容

  • 没有找到相关文章

最新更新