【发布时间】:2010-09-25 07:29:24
【问题描述】:
我保持 JMS 连接始终打开,因为上面有一个 MessageListener。
是否普遍需要担心使用长期 JMS 连接来最小化应用程序的维护?
我正在考虑尝试从一些常见的众所周知的故障中恢复,例如临时连接故障。
【问题讨论】:
标签: connection integration jms
我保持 JMS 连接始终打开,因为上面有一个 MessageListener。
是否普遍需要担心使用长期 JMS 连接来最小化应用程序的维护?
我正在考虑尝试从一些常见的众所周知的故障中恢复,例如临时连接故障。
【问题讨论】:
标签: connection integration jms
据我所知,标准 JMS 规范中没有任何内容可以确保应用程序不会看到连接问题。也许有些供应商将其作为扩展(正如 James Strachan 所建议的那样)。
如果您想要一个不依赖于供应商扩展的健壮 JMS 客户端,您需要处理错误并重新连接。请参阅Reconnecting JMS listener to JBossMQ(尽管有标题,但它不是 JBossMQ 特定的)。
【讨论】:
一个好的 JMS 提供者将处理网络中断,例如丢失的套接字或消息代理故障转移或重新启动。例如这是enable automatic reconnection 在Apache ActiveMQ 中的方式。
重新创建所有 JMS 资源(连接、会话、生产者、消费者)通常很痛苦 - JMS 提供者为你做这件事要容易得多。
如果您必须使用不支持此功能的提供程序 - 请考虑切换,或使用 Spring JMS 帮助程序类,它可以为您完成其中的一些工作。
【讨论】:
您需要处理两种情况:
我建议安装本地 JMS 服务器(任何都可以),将您的应用程序连接到它并停止服务器。这将为您提供案例 #2 的错误消息。然后使用MockRunner 编写单元测试以确保您的错误处理正确。
【讨论】: