Spring 集成 Zookeeper - 我目前是领导者吗
Spring Integration Zookeeper - Am I Currently leader
在多个 Tomcat 实例上部署了一个 Spring Integration 4.3.8 应用程序,并且该应用程序使用 org.springframework.integration:spring-integration-zookeeper:4.3.8.RELEASE
到 运行 集群中应用程序的多个实例一次只有一个人被选为领导者。
问题是,从应用程序中查询我当前是否是领导者的最简单方法是什么?我可以通过可用的 Curator/Zookeeper API 获取此信息吗?还是我需要创建某种事件侦听器?
希望您使用LeaderInitiator
。
当它被授予领导者角色时,会发出 OnGrantedEvent
。
那甚至还有 Context
属性。反过来,那个有 isLeader()
状态。
您可以存储此对象以供将来使用,并在需要时检查 isLeader()
。
自版本 5.0
LeaderInitiator
提供对上下文的直接访问:
/**
* The context of the initiator or null if not running.
* @return the context (or null if not running)
* @since 5.0
*/
public Context getContext() {
if (this.leaderSelector == null) {
return NULL_CONTEXT;
}
return this.context;
}
在多个 Tomcat 实例上部署了一个 Spring Integration 4.3.8 应用程序,并且该应用程序使用 org.springframework.integration:spring-integration-zookeeper:4.3.8.RELEASE
到 运行 集群中应用程序的多个实例一次只有一个人被选为领导者。
问题是,从应用程序中查询我当前是否是领导者的最简单方法是什么?我可以通过可用的 Curator/Zookeeper API 获取此信息吗?还是我需要创建某种事件侦听器?
希望您使用LeaderInitiator
。
当它被授予领导者角色时,会发出 OnGrantedEvent
。
那甚至还有 Context
属性。反过来,那个有 isLeader()
状态。
您可以存储此对象以供将来使用,并在需要时检查 isLeader()
。
自版本 5.0
LeaderInitiator
提供对上下文的直接访问:
/**
* The context of the initiator or null if not running.
* @return the context (or null if not running)
* @since 5.0
*/
public Context getContext() {
if (this.leaderSelector == null) {
return NULL_CONTEXT;
}
return this.context;
}