Camel路由执行优先级

时间:2014-10-20 16:39:49

标签: java multithreading apache-camel

我试图了解Camel是否能够在同一过程中优先考虑路由执行优先于其他路由。

例如,我们有:

from("cxfrs://restendpoint").routeId("HIGH").log("high priority");

from("file://filestore").routeId("LOW").log("low priority");

我希望HIGH路线不会因LOW路线而减速。所以当一个巨大的文件被LOW路由处理并且一个休息呼叫到达HIGH路由时,我希望CPU给HIGH路由提供更多的时间。

我正在考虑通过在2个应用程序中拆分路由并使用Linux进程优先级为HIGH路由分配更多时间来实现这一点。

有没有办法用Camel做到这一点?例如,使用线程优先级的东西?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

查看Apache Camel/ActiveMQ priority route(初始情况不同,但解决方案也适用于您的用例):

  • 使用JMS并优先处理队列
  • 使用SEDA阻止队列,如here
  • 所述
  • 使用Resequencer

修改

作为附加选项,使用带有自定义ExecutorService的{​​{1}}并设置线程优先级,例如:

ThreadFactory

可以找到关于Java线程优先级的好文章here