Apache camel 驼峰多消费者实现问题

Apache camel 驼峰多消费者实现问题,apache-camel,Apache Camel,假设我有一个作业调度器,它有4个使用者a、B、C和D。类型X的作业必须路由到使用者a,类型Y路由到使用者B,以此类推。消费者A、B、C和D将作为独立的应用程序运行,不依赖于本地或远程应用程序 使用者需要不同的时间来完成其作业,这些作业随后被路由到作业调度器进行聚合 可能还需要其中一个消费者的克隆人来分享其合格的工作。但是,作业只能处理一次 基于内容的路由器是最好的解决方案吗?请注意,我需要定制作业调度器,因为它只有在消费者之间分配作业的智能 还是有更好的方法来处理这个问题?我不需要代理的那些特性

假设我有一个作业调度器,它有4个使用者a、B、C和D。类型X的作业必须路由到使用者a,类型Y路由到使用者B,以此类推。消费者A、B、C和D将作为独立的应用程序运行,不依赖于本地或远程应用程序

使用者需要不同的时间来完成其作业,这些作业随后被路由到作业调度器进行聚合

可能还需要其中一个消费者的克隆人来分享其合格的工作。但是,作业只能处理一次

基于内容的路由器是最好的解决方案吗?请注意,我需要定制作业调度器,因为它只有在消费者之间分配作业的智能


还是有更好的方法来处理这个问题?我不需要代理的那些特性,比如自动切换到另一个使用者(负载平衡)以及在出现故障时的这些特性

我不能完全肯定我是否明白你的意思。对于非同步处理,这听起来是一个相当直接的场景

我不确定您打算如何将这些作业发送到Camel应用程序,但如果您可以在某个地方接收它们,您可能会使用一个简单的基于内容的路由器

考虑到您对用户的需求,我会选择JMS队列(使用ApacheActiveMQ或类似的代理中间件),每个作业类型一个队列。这使得在不真正更改代码的情况下将使用者分发到不同的机器上变得很容易

// Central node routes
from("xxx:routeJob")
   .choice()
       .when(header("type").isEqualTo("x"))
           .to("jms:queue:processJobTypeX")
       .when(header("type").isEqualTo("y"))
           .to("jms:queue:processJobTypeY")
       .otherwise()
           .to("jms:queue:processJobTypeZ"); 

 from("jms:queue:aggregateJob")
    .bean(aggregate);

// different camel application (may be duplicated for multiple instances).
from("jms:queue:processJobTypeX")
  .bean(heavyProcessing)
  .to("jms:queue:aggregateJob");

// Yet another camel application
from("jms:queue:processJobTypeY")
  .bean(lightProcessing)
  .to("jms:queue:aggregateJob");
请重新审视您的问题以获得更好的答案:)