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

问题描述 投票:0回答:1

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

之前的系统使用共享数据库来相互通信,但我们希望摆脱 cfschedule 轮询延迟。所有子系统都是用CF编写的。

我正在研究 MOM,很可能是一个 JMS 代理,因为 CF 附带了一个事件网关,或者基本的远程方法调用。附带问题:通过 http 使用

*.cfc?method=
会比将它们作为 SOAP Web 服务调用更快吗?

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

此外,我们将使用 CF 标准,因此在事件网关中仅限 1 个线程,以及并发 2 个自定义线程。

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

architecture coldfusion soa mom
1个回答
2
投票

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

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

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

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

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

希望有帮助,

斯科特

© www.soinside.com 2019 - 2024. All rights reserved.