何时使用Camel Wiretap或SEDA?

时间:2014-08-08 08:33:04

标签: asynchronous apache-camel

在我的Camel Route中,当Exception命中onException处理程序时,我需要向JMS发送消息。为了加快主路由,我尝试通过Wiretap

异步发送消息

我尝试使用这样的东西:

onException().handled(true).logHandled(true)
  .wiretap("seda:another_queue").end();
...
from("seda:another_queue?concurrentConsumers=5")
  .to("jms:queue_for_my_exception_messages");

是否有必要使用Wiretap,或者我可以只使用SEDA这样的队列:

onException().handled(true).logHandled(true)
  .to("seda:another_queue").end();
...
from("seda:another_queue?concurrentConsumers=5")
  .to("jms:queue_for_my_exception_messages");

2 个答案:

答案 0 :(得分:2)

您不需要使用窃听器。只有seda队列才有效。

在您希望拦截组件之间的消息以进行分析或调试时,应使用

Wiretap模式。

答案 1 :(得分:2)

Wiretap和SEDA之间的一个重要区别是,当从民意调查消费者(例如fileftp)消费时,只有窃听是轻而易举的。

当从轮询使用者消费的线程达到.to(seda:xx)时,它将切换交换并按预期继续路由或从端点消耗新的交换。 传递给seda端点的交换将通过seda线程而不是原始的消费者线程提交给原始消费者。这意味着,如果您的轮询消费者端点定义中有delete=true,则在seda线程完成之前不会删除该文件。