0

我有一种情况,当客户端与 JMS 服务器断开连接时,我想存储无法传递到 JMS 服务器的消息。我已经阅读了有关 JMS 提供程序的存储和转发功能的信息,但我还没有在客户端级别看到任何关于此功能的讨论。在客户端实现中是否有提供此功能的提供商?

我考虑过添加一个进程中的 JMS 提供程序,它可以将消息存储并转发到 JMS 服务器。可用的最轻量级实现是什么?HornetMQ,ActiveMQ?似乎这是一个非常利基的用例,并且可能有针对此场景的优化实现,它包装另一个提供程序并且比完全嵌入式 JMS 提供程序更轻。

4

1 回答 1

1

在客户端存储消息不是 JMS 标准功能,您应该在客户端添加一些处理,以应对 JMS 服务器不可用的情况。为了减少发生这种情况的机会,您可以在同一台机器上运行 JMS 服务器,甚至可以在与客户端相同的 JVM 中运行。但是,连接丢失的可能性仍然很小,因此您仍然需要一些客户端处理代码。

您还需要一些东西,将消息从本地 JMS 服务器转发到应该接收消息的服务器。一些消息传递系统确实具有关心这种转发的特殊功能(例如 SonicMQ 的动态路由架构) - 也许您可以使用 ActiveMQ 中的代理网络达到相同的行为(http://activemq.apache.org/networks-of-brokers .html ) - 否则您可以使用 Apache Camel 之类的 ESB 实现来实现此行为。

关于消息传递的实现,我不会坚持使用 HornetQ,因为它将被 ActiveMQ 取代为 JBoss 标准消息传递提供程序。

于 2013-02-11T08:35:27.880 回答