鉴于您询问的是用 ActiveMQ 或远程方法调用替换共享数据库,我假设您的用例实际上是消息传递与应用程序共享状态;shared DB 显然是在多个应用程序之间进行共享状态的好方法。您的描述也让我认为您的应用程序正在向其他应用程序发送通知或事件,因为发生了一些有趣的事情......
当您调用单个应用程序时,远程方法调用起作用,您需要立即响应,并且您知道另一个应用程序将可用(即正在运行)。如果在需要发送消息时接收应用程序可能没有运行,许多系统会发现这种方法具有挑战性。如果您当前或将来需要发送到多个应用程序,远程方法调用也具有挑战性,特别是如果发送应用程序不知道未来的接收者。
MOM,特别是 ActiveMQ,是一种可靠的异步向一个或多个接收器发送消息的好方法。发送应用程序给 ActiveMQ 消息,然后继续做它的工作(不会阻止你的应用程序做更多的工作)。消息接收者将在连接到 ActiveMQ 时接收消息 - 也就是说,如果在发送消息时它们已连接,其速度与远程方法一样快;如果接收者稍后连接,他们将在连接时接收(无轮询)。ActiveMQ 确保消息是安全的,直到接收者确认接收。
如果您正在发送事件,使用像 ActiveMQ 这样的消息传递系统非常好,因为您可以使用称为发布/订阅的范例,其中可以将消息(事件)传递给多个接收者。发送应用程序不知道这些接收者;他们只需要知道如何连接到 ActiveMQ。这种范式是解耦应用程序的好方法;您的应用程序发送有趣的事件,而其他可以从知道该事件发生中受益的应用程序将来可以连接到 ActiveMQ...
Gregor Hohpe 的Enterprise Integration Patterns站点是许多集成模式(包括发布/订阅)的重要资源。有关 ActiveMQ 的更多信息可以在 Apache ActiveMQ 或FuseSource 的 ActiveMQ站点上找到
希望有帮助,
斯科特