Java Spring集成中的故障切换和KeepAlive

Java Spring集成中的故障切换和KeepAlive,java,spring,messaging,spring-integration,gateway,Java,Spring,Messaging,Spring Integration,Gateway,类似于在会议上提出的问题 我必须实现故障切换功能,但是我的表现有所不同 我有两个代理:主代理和辅助代理,还有一个服务以主模式或备份模式运行在相同的服务器上。使用同步队列执行内部数据的同步 在该服务中,我希望通过Spring集成实现以下功能: 每个1Q、2Q、3Q、…、5Q队列有一个接收方,1SQ队列有一个发送方。接收方和发送方都使用主代理(已在Spring中使用发送方的消息网关和路由器以及接收方的服务激活器实现) 当接收到来自1Q-5Q的消息时,会向1SQ发送一条新消息(这已经起作用)。同时,

类似于在会议上提出的问题 我必须实现故障切换功能,但是我的表现有所不同

我有两个代理:主代理和辅助代理,还有一个服务以主模式或备份模式运行在相同的服务器上。使用同步队列执行内部数据的同步

在该服务中,我希望通过Spring集成实现以下功能:

  • 每个1Q、2Q、3Q、…、5Q队列有一个接收方,1SQ队列有一个发送方。接收方和发送方都使用主代理(已在Spring中使用发送方的消息网关和路由器以及接收方的服务激活器实现)

  • 当接收到来自1Q-5Q的消息时,会向1SQ发送一条新消息(这已经起作用)。同时,内部数据的更新被发送到同步队列。这样,在发生故障转移时,内部数据结构将同步

  • 外部模块向主代理的1Q队列发送额外的KeepAlive消息。如果N秒后未收到消息。新的接收者和发送者应该启动与次要代理一起操作的接收者和发送者。这样,接收方/发送方就承担了主代理的功能

问题:

显然,循环策略是不合适的。此外,自动选择辅助服务器(如中所示)也不是一个好办法。这就是为什么选择keepAlive消息来检测主代理是否已关闭。是否可以将此功能与Spring集成在一起?更准确地说:

  • 当主服务器未收到keepAlive消息时,如何为我的发件人/收件人实现主服务器和辅助服务器之间的切换
  • 当主服务器重新启动并运行时,是否可以切换回主服务器