为Java客户端实现故障转移模式的最佳方法

时间:2011-10-02 15:26:41

标签: java client design-patterns failover

我们正在设计一个Java客户端(将部署在Tomcat,Windows 2008 R2上),需要订阅Sonic MQ上的一些JMS主题。

客户希望为此Java客户端提供冗余,并且在任何时候,只应订阅一个订户的主题。

我们的要求与此post类似。

是否有为此目的而构建的标准化开源项目,或者我们必须编写自己的代码来检查服务器运行状况(耗时)? 实现此Java客户端的最佳方法是什么。

我们正在探索以下用于使用JMS消息的技术:

  • Spring Integration
  • Apache Camel

我们是否朝着正确的方向前进?我们应该能够在飞行中开始/停止对主题的订阅。

1 个答案:

答案 0 :(得分:1)

Apache Camel有这样的开箱即用检查this。它实现了EAI Load Balancer模式。您可以选择“故障转移”策略。似乎正在使用Exception来决定下一个处理器。

其他方法可以是在订阅者之间实现简单的基于自定义jms的听力,以跟踪彼此的健康状况并平衡负载或故障转移。每个订阅者都可以跟踪他们想要处理的内容。例如,从您提供的链接中,每个订阅者都知道它正在侦听的主题,并在心跳失败的情况下继续从其他订阅者接收听力。故障转移侦听器将开始为失败的侦听器接收消息。我认为您可以使用JMS消息选择器来实现过滤器。一个很好的参考开始可以是关于Javaworld的this旧文章。