gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:23:00 26 4
gpt4 key购买 nike

我想知道远程控制路线的最佳方法是什么。我已经查看了 Apache Zookeeper 及其与 Camel 的集成,但我不确定是否可以用它完成我想要的。

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

谢谢!

最佳答案

假设任何一个应用程序都可以消费。然后应用程序将尝试创建一个临时 znode,说“/consumerstarted”,如果创建成功,将开始消费。无论哪个应用程序首先创建临时节点,它都将成为消费者。另一个应用程序将获得“Zookeeper 节点已存在”类型的异常,并决定不使用。现在从这两个应用程序中,您应该在 Znode 上设置一个 watch 并且当节点被删除时将触发 watch 监听器(可能是因为所有者应用程序明确删除临时节点或所有者应用程序关闭,或者所有者应用程序失去与动物园管理员)。然后应用程序应该通过创建临时的“/consumerstarted”Znode 再次尝试成为消费者。

另一种方法可能是:所有应用程序都在某个“文件夹”下注册自己的临时 Znode,例如“/allapps”。 Znodes 的名称可能是一些唯一的 Id。例如,/allapps/uuid1、/allapps/uuid2 等。所有应用程序都应该在其相应的 Znode 上监视数据更改。每当数据设置为“开始消费”之类的内容时,相应的应用程序就应该开始消费。您可以从另一个程序或 Zookeeper CLI 设置数据。

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

关于java - 通过复制远程启动/停止 Apache Camel 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com