我始终打开JMS连接,因为我有一个MessageListener。
是否需要担心使用长期JMS连接最小化应用程序的维护?
我正在考虑尝试从一些可能常见的常见故障类型中恢复,例如临时连接故障。
答案 0 :(得分:3)
一个优秀的JMS提供程序将处理网络中断,例如丢失的套接字或消息代理故障转移或重新启动。例如以下是enable automatic reconnection中Apache ActiveMQ的方式。
重新创建所有JMS资源(连接,会话,生产者,消费者)通常非常困难 - JMS提供程序更容易为您完成。
如果必须使用不支持此功能的提供程序 - 请考虑切换,或使用可以为您执行此操作的Spring JMS帮助程序类。
答案 1 :(得分:1)
您需要处理两种情况:
我建议安装一个本地JMS服务器(任何会这样做),将你的应用程序连接到它并停止服务器。这将为您提供案例#2的错误消息。然后使用MockRunner编写单元测试,以确保错误处理正确。
答案 2 :(得分:1)
我所知道的标准JMS规范中没有任何内容可确保应用程序无法看到连接问题。也许有些供应商将此作为扩展(正如James Strachan建议的那样)。
如果您想要一个不依赖于供应商扩展的强大JMS客户端,则需要处理错误并重新连接。请参阅Reconnecting JMS listener to JBossMQ(尽管标题不是JBossMQ特有的)。