Apache Camel 中的集群:多个 JVM 相同的 CamelContext

2023-12-02

我有一个部署在集群上的应用程序。根据环境,集群可能有 2 或 4 个 JVM。 该应用程序具有我们在所有 JVM 上部署的相同 CamelContext。因此,所有 JVM 都有相同的路由。对于 FTP 路由,这很好,因为它具有竞争力,并且只有 1 个 JVM 获取文件。 然而,在使用基于计时器的操作从数据库中获取数据时,我发现所有 JVM 都读取相同的记录集并执行相同的工作。 我想要的是,如果一条路线选择了它,其他路线就不应该尝试。 我尝试用谷歌搜索这个。但是,找不到最好的方法来做到这一点。 有没有默认的骆驼组件支持这个? 我读了聚类 and 负载均衡关于Camel文档,但没有帮助。 JGroups 和 ZooKeeper 特定于集群类型。任何帮助,将不胜感激。


首先,不同部署的 Camel 上下文将充当独立的应用程序,彼此不了解。

如果您有多个路由使用来自相同源的行为,则行为非常依赖于组件。

  • 文件/FTP 和类似的文件通常具有文件锁定机制,以避免多个使用者读取同一文件。
  • 消息队列(JMS/AMQP/等)内置了消息处理,除非您使用主题 - 那么每个实例都会获得一个副本。
  • 数据库和其他可轮询组件可能需要您使用仅从一个节点生成的某种信号来触发轮询。

我想最后一个是你的主要问题。这可以通过多种方式来完成。它们的设置可能有点棘手,但应该可以完成工作。

  • 集群式 Quartz 调度程序。通常需要共享数据库。 阅读此处如何配置驼色石英。然后您需要配置quartz.properties 和集群属性(JDBC 或其他)。那是记录在这里.
  • 您可以使用以下命令运行单个路由(在部署的 Camel 实例中选择)ZooKeeper 和路由策略。然后,您可以使用该路由并在出现问题时故障转移到其他路由,或者使用该单个路由来发出触发器,使用计时器或石英来轮询可以分发到所有骆驼实例的触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apache Camel 中的集群:多个 JVM 相同的 CamelContext 的相关文章

  • ESB 应该如何打包/部署?

    我正在尝试了解 Apache Camel 它似乎是一个轻量级的 ESB 如果我正确理解 Camel ESB 那么您可以将 Camel Route 视为节点和边的图 每个节点都是路由上的端点 可以消耗 产生消息 每条边都是两个不同端点 1 个
  • Log4J SocketAppender 吞下来自远程客户端的调试信息

    我已经配置了一个简单套接字服务器 http logging apache org log4j 1 2 apidocs org apache log4j net SimpleSocketServer html public class Sim
  • Camel中如何动态添加和启动路由?

    我正在尝试从 Camel 的路线中删除一些样板 例如 让我们考虑两条相似的路线 并且可以生成它们的大部分内部内容 我创建了一个组件 模板 它创建了TemplateEndpoint 并修改了 XML 配置以使用模板组件 自定义方法Templa
  • 在端口 3000 上对 Node.js 应用程序进行 AWS 负载平衡

    我有一个 Node js Express Web 应用程序 它使用默认端口 3000 并通过弹性 IP 在 Ubuntu EC2 实例上响应良好 我正在尝试设置 AWS 内置的负载平衡 但似乎无法通过良好的运行状况检查 设置 2 个 ubu
  • 如何将颜色更改为 fviz_silhouette 中簇号以外的变量

    我正在使用包额外事实 in R生成轮廓图 目前 轮廓会通过聚类自动为图形着色 我想用另一个变量来着色Site我将其定义为 x 我尝试过将填充和颜色更改为站点变量 但似乎没有任何效果 我也尝试过使用scale color manual and
  • 使用Camel的spring-rabbitmq组件时如何自动声明交换?

    我正在尝试从 Camel 3 x 迁移到 Camel 4 x 版本 因此我需要从rabbitmq替换组件spring rabbitmq With rabbitmq我正在使用的组件declare https camel apache org
  • Camel http4 和 url 编码的密码被解释为单独的参数

    我们有一个 Apache Camel 2 13 2 应用程序 它使用 http4 与网络服务器通信 并使用 NTLM 进行身份验证 端点定义为 伪 to http4 thegreat server com uri authUsername
  • Apache Camel:带有 CxfEndpoint 的 RouteBuilder

    Hello 我正在尝试使用 Java DSL 和 RouteBuilder 实现 Camel 路线 我想从计时器端点发送到 cxf 端点 Code public class MyRoute extends RouteBuilder Over
  • Rancher - 如何公开我的服务?

    我有一个正在运行的 Rancher 设置 如下所示 主机 运行牧场主 https github com rancher rancher容器 在公共IP上 无法从 Internet 访问专用网络 10 1 1 0 24 中的节点 我的目标是使
  • 属性错误:“图形”对象没有属性“节点”

    我有以下 python 代码来构建 knn 图 但出现错误 AttributeError Graph 对象没有属性 node 似乎 nx Graph 没有节点属性 但我不知道应该用它替换什么 import networkx as nx de
  • 如何平衡Web服务器带宽使用?

    我有一个 drupal 商务网站 用户一直在其中上传大量图像 每个商业订单有 n 个图像 我想平衡网络流量以节省带宽 每个服务器的带宽是有限的 我无法使用传统的负载平衡解决方案 因为平衡器服务器的带宽也有限 我的数据库将位于单独的服务器上
  • Google 负载均衡器 www 到非 www 重定向

    我在使用 google 负载均衡器进行 www 到非 www 重定向时遇到一些困难 目前我的 HTTP gt https 工作没有问题 但是 我还没有真正看到任何关于其工作原理的最新文档 我的负载均衡器设置可以运行 App Engine A
  • Camel如何以流模式处理json?

    为了在流模式下读取 json 并解组 Camel OOB 中有哪些可用选项 如果不是现成的 如何实施 我发现camel xstream 可能会有所帮助 流模式是默认的还是我们需要做其他事情来使其以流模式读取 还有 Jackson Strea
  • Websphere 7集群部署

    我们有一个 J2EE 应用程序作为 EAR 文件 部署在 WAS 7 中 为了使应用程序可用性尽可能高 需要部署在 3 个集群中 我们有一个 Quartz Scheduler 类 其工作是每天凌晨 2 00 将数据从一个数据库上传到另一个数
  • Request.UserHostAddress返回负载均衡器的IP地址

    我的网站中有一行关键代码可以在我们的开发环境中运行 但不能在生产环境中运行 好吧 我说它在开发中起作用 但事实是它给了 1 这是 IPv6 环回地址 无论如何 我想要做的是捕获访问该站点的用户的 IP 地址 因此 我使用Request Us
  • Camel JAX-RS 和跨域请求

    我希望能够在我的本地 Camel 实例上执行 HTTP 请求 仅出于开发目的 我知道这是不好的做法 现在 我坚持 Origin http localhost 8000 is not allowed by Access Control All
  • Akka、SQS 和 Camel 的消费者投票率

    我正在做的一个项目需要从SQS读取消息 我决定使用Akka来分布式处理这些消息 由于 Camel 支持 SQS 并且在 Consumer 类中内置了 Akka 中使用的功能 因此我认为最好以这种方式实现端点并读取消息 尽管我还没有看到很多人
  • 骆驼:我如何异步发送到端点

    如何在不等待端点的路由被处理的情况下向端点发送消息 也就是说 我的路由应该只分派消息并完成 wireTap endpoint 就是答案
  • 与恶霸算法相比,高级主选举算法有什么好处?

    我读过当前的主选举算法 如 Raft Paxos 或 Zab 如何在集群上选举主节点 但不明白为什么他们使用复杂的算法而不是简单的恶霸算法 我正在开发一个集群库并使用 UDP 多播来发送心跳消息 每个节点加入一个多播地址 并定期向该地址发送
  • 用于检查 Apache Camel XML 中字符串的 JSONPath 表达式

    假设我有一个简单的 json 文件 如下所示 log host blah severity INFO system 1 我正在使用 Apache Camel 它是 Spring XML 来处理和路由 json 文件 我的路由代码看起来像这样

随机推荐