Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring集成Zookeeper-我现在是领导者吗_Java_Spring Integration_Apache Zookeeper_Apache Curator - Fatal编程技术网

Java Spring集成Zookeeper-我现在是领导者吗

Java Spring集成Zookeeper-我现在是领导者吗,java,spring-integration,apache-zookeeper,apache-curator,Java,Spring Integration,Apache Zookeeper,Apache Curator,在多个Tomcat实例上部署一个Spring Integration 4.3.8应用程序,该应用程序使用org.springframework.Integration:Spring Integration zookeeper:4.3.8.RELEASE在一个集群中运行该应用程序的多个实例,其中每次只有一个实例被选为领导者 问题是,从应用程序中查询我目前是否是领导者的最简单方法是什么?我可以通过可用的馆长/动物园管理员API获取此信息吗?或者我需要创建某种类型的事件侦听器吗?我希望您使用Leade

在多个Tomcat实例上部署一个Spring Integration 4.3.8应用程序,该应用程序使用
org.springframework.Integration:Spring Integration zookeeper:4.3.8.RELEASE
在一个集群中运行该应用程序的多个实例,其中每次只有一个实例被选为领导者


问题是,从应用程序中查询我目前是否是领导者的最简单方法是什么?我可以通过可用的馆长/动物园管理员API获取此信息吗?或者我需要创建某种类型的事件侦听器吗?

我希望您使用
LeaderInitiator

当被授予领导者角色时,将发出一个
OnGrantedEvent
。 它甚至具有
上下文
属性。而这一个,反过来,具有
isLeader()
状态

您可以存储此对象以备将来使用,并在需要时随时检查is
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;
}

您还可以在其中一个端点上调用
isRunning()
;只有当您是领导者时才应该是真的。@GaryRussell,我们的端点已被覆盖,因为我们有一些业务案例,我们希望某些端点即使在部署成为领导者时也不启动。事实上,这就是为什么我们正在寻找一种知道我们是否是领导者的方法,以便只有在
hasLeadership=true
时,我们才能在重写的端点上调用
super.start()
。因此,在本例中,为什么在端点上查询
isRunning()
对我们不起作用!我不知道我的答案是否适合您的用例。@Artem,5.0版在哪里可用?我们目前使用的是Maven的最新版本4.3.8。5.0版是否在某个快照存储库中?访问
CuratorContext
并在其上调用
isLeader()
,应该可以做到这一点。最新的是
M3
:。但正如我所说的:您处理
OnGranted/onreversed
事件以获得
上下文
,以备将来使用。如果没有事件,则没有上下文,因此,您不是领导者。在
5.0
GA之前,这就像是一个变通办法,如果那样的话。我们可以考虑回溯一下<代码> GETCONSETURNER()/<代码>,但是…如果你真的无法想出解决方案,请免费筹集适当的JIRA: