Architecture ActiveMQ MOM与ColdFusion中的SOA体系结构的远程方法与共享数据库?

Architecture ActiveMQ MOM与ColdFusion中的SOA体系结构的远程方法与共享数据库?,architecture,coldfusion,soa,activemq,mom,Architecture,Coldfusion,Soa,Activemq,Mom,我们正处在建筑的十字路口 以前的系统使用共享数据库进行彼此之间的通信,但我们希望消除cfschedule轮询延迟。所有子系统都是用CF编写的 我正在研究MOM,很可能是ActiveMQ,因为CF附带了一个事件网关,或者基本的远程方法调用。附带问题:通过http使用*.cfc?方法=会比将它们作为SOAP web服务调用更快吗 我们还希望能够记录失败的尝试,查询实际状态,并可能在一段时间后自动重试。MOM/ActiveMQ符合我们的要求吗?我们应该实现自己的队列吗 此外,我们将使用CF标准,因此在

我们正处在建筑的十字路口

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

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

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

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


如有任何意见或建议,我们将不胜感激,谢谢

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

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

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

如果您正在发送事件,那么使用ActiveMQ这样的消息传递系统非常好,因为您可以使用一个名为发布/订阅的范例,在这个范例中,消息(事件)可以传递给多个接收者。发送应用程序不知道这些接收器;他们只需要知道如何连接到ActiveMQ。这个范例是一个分离应用程序的好方法;您的应用程序会发送有趣的事件,其他应用程序如果知道发生了事件,则可以在将来连接到ActiveMQ

Gregor Hohpe的站点是许多集成模式(包括发布/订阅)的重要资源。有关ActiveMQ的更多信息可以在Apache ActiveMQ或站点上找到

希望有帮助


Scott

还值得指出的是,CF ActiveMQ网关可与任何JMS服务器配合使用,并支持持久的发布服务器/订阅服务器和其他重要的健壮性功能。