首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Camel多使用者实现问题

Camel多使用者实现问题
EN

Stack Overflow用户
提问于 2012-12-22 15:15:12
回答 1查看 1.4K关注 0票数 1

假设我有一个Job Scheduler,它有4个消费者A、B、C和D。类型X的作业必须路由到消费者A,类型Y的作业必须路由到消费者B,依此类推。使用者A、B、C和D将作为独立的应用程序运行,而不需要任何依赖,无论是本地还是远程。

使用者完成其作业所需的时间各不相同,这些作业随后被路由到Job Scheduler进行聚合。

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

基于内容的路由器是解决此问题的最佳解决方案吗?请注意,我需要自定义作业调度器,因为它只具有在使用者之间拆分作业的智能。

或者有没有更好的方法来处理这件事?我不需要代理的那些功能,比如自动切换到另一个使用者(负载平衡),以及在出现故障时这样的功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-30 01:23:06

我不能完全确定我是否理解你的意思。这听起来像是异步处理的一个相当简单的场景。

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

考虑到您对使用者的需求,我建议使用JMS队列(使用Apache或类似的代理中间件),每个作业类型一个队列。这使得将消费者分配到不同的机器上变得很容易,而不需要真正更改代码。

代码语言:javascript
复制
// 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");

请重新查看您的问题以获得更好的答案:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14000861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档