2013-02-11 20 views
0

我有一种情况,当客户端从JMS服务器断开连接时,我想要存储无法传递到JMS服务器的消息。我已阅读了关于JMS提供程序的存储和转发功能,但我还没有在客户端看到有关此功能的任何讨论。是否有任何提供者在客户端实现中提供此功能?JMS生产者可以在与JMS服务器断开连接时使用本地存储并转发吗?

我曾考虑添加一个可以存储和转发消息到JMS服务器的进程内JMS提供程序。什么是最轻量级的实现? HornetMQ,ActiveMQ?似乎这是一个非常小的用例,对于这种情况可能会有一个优化的实现,它包装了另一个提供程序,并且比完整的嵌入式JMS提供程序的权重更轻。

回答

1

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

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

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

+0

您能否为您的声明提供参考,HornetQ将被ActiveMQ替代为JBoss标准消息传递提供程序?谢谢! – 2014-04-08 20:59:57

+0

这是我们3年前从RedHat同事那里收到的一些信息 - 看着实际的产品,我会假设这种替换没有发生,也许永远不会...... – roundrobin 2014-04-22 05:19:00

相关问题