我们正在设计一个Java客户端(将部署在Tomcat、Windows 2008 R2上),它需要订阅Sonic MQ上的一些JMS主题。
客户端希望该 Java 客户端具有冗余性,并且在任何时间点,只能有一个订阅者订阅主题。
我们的要求类似于这个post 。
是否有为此目的而构建的标准化开源项目,或者我们必须编写自己的代码来检查服务器运行状况(耗时)? 实现此 Java 客户端的最佳方法是什么。
我们正在探索以下用于消费 JMS 消息的技术:
- Spring 集成
- Apache Camel
我们的方向正确吗?我们应该能够实时启动/停止主题订阅。
最佳答案
Apache Camel 有类似这样的开箱即用检查 this 。它实现了EAI负载均衡器模式。您可以选择“故障转移”策略。似乎正在使用异常来决定接下来要使用哪个处理器。
其他方法可以是在订阅者之间实现基于简单自定义 jms 的心跳,以跟踪彼此的运行状况并平衡负载或故障转移。每个订阅者都可以跟踪他们应该处理的内容。例如,从您提供的链接中,每个订阅者都知道它正在监听的主题,并在心跳失败的情况下继续接收来自其他订阅者的心跳,故障转移监听器将开始为失败的监听器获取消息。我认为你可以使用JMS消息选择器来实现过滤器。一个很好的开始引用可以是 this Javaworld 上的旧文章。
关于java - 为 Java 客户端实现故障转移模式的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627257/