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

标签 java client design-patterns failover

我们正在设计一个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/

相关文章:

design-patterns - Java EE 6 - 持久域对象模式 - 成功了吗?

java - 在java中设计sql查询存储的最佳方法是什么?

java.lang.NoClassDefFoundError : Could not initialize class - Kotlin Object 错误

Java 11 解析本地时间 HH :mm am/pm does not work , Java 8 做

java - 避免与 JSoup 进行无空格连接

c - 如何获得eth : IP address of Client in UDP in C language

java - Spring @Transactional 在每个服务方法结束时提交

java - 区分服务器线程(用户连接)

html - 客户端 : HTML, DOM 和 CSS?

oop - 我应该如何在面向对象设计中实现数据库中规范化的项目?