有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java启动/停止Apache Camel通过复制远程路由

我想知道远程控制路线的最佳方法是什么。我已经研究了Apache Zookeeper及其与Camel的集成,但我不确定我想用它做什么

我的场景如下:我有两个完全相同的路由在两个不同的Java应用程序中运行。我希望两条路线都能运行,但只需要其中一条。但是,我希望能够决定应该使用哪条路线。我不确定在ZookeeperRoutePolicy中是否可以这样做。如果是,我如何才能做到这一点?如果不是,创建我自己的路线策略将是一条出路

谢谢


共 (1) 个答案

  1. # 1 楼答案

    假设其中任何一个应用都可以使用。然后,这些应用将尝试创建一个短暂的znode,比如“/consumerstarted”,如果创建成功,它们将开始消费。无论哪个应用程序首先创建短暂节点,都将是消费者。另一个应用程序将获得“Zookeeper节点已存在”类异常,并将决定不使用。 现在,从这两个应用程序中,你应该在Znode上设置一个手表,当节点被删除时,手表侦听器将被触发(可能是因为所有者应用程序显式删除临时节点,或者所有者应用程序关闭,或者所有者应用程序与Zookeeper失去连接)。然后,应用程序应该再次尝试通过创建短暂的“/consumerstarted”Znode来成为消费者

    另一种方法可能是: 所有的应用程序都会在某个“文件夹”下注册自己的临时znode,比如“/allapps”。znode的名称可能是一些唯一的Id。例如,/allapps/uuid1、/allapps/uuid2等。 所有应用程序都应该将手表放在相应的Znode上,以便进行数据更改。当数据设置为“开始消费”时,相应的应用程序应该开始消费。您可以从其他程序或Zookeeper CLI设置数据

    顺便说一句,https://github.com/sgroschupf/zkclient是一个非常好的Zookeeper客户端库