在基于camel的应用程序中更新不同线程中的数据库

时间:2013-10-21 13:52:59

标签: database apache-camel

我有一个基于Camel的应用程序,它接收请求并从缓存中给出回复,但在此过程之间它更新数据库,我希望它在不同的线程中运行,任何人都可以告诉我如何实现这一点,我尝试使用WireTap和SEDA,但它没有那样工作...任何帮助表示赞赏。

<camel:wireTap uri="seda:tap" processorRef="updateHitCountProcessor"/>

在updateHitCountProcessor中,我编写了更新表的代码 它是在同一个线程(即主路由线程)中更新数据库

2 个答案:

答案 0 :(得分:2)

你需要做

<camel:wireTap uri="ref:updateHitCountProcessor"/>

processorRef属性正在创建并发送新消息,而不是用于点击现有消息。所以你不应该使用它。

uri用于发送在单独线程中发生的消息。因此,当您将其发送到ref端点时,它将在另一个线程中执行此操作,并调用您的处理器。

您可以在电话分页页面上找到详细信息:http://camel.apache.org/wire-tap

答案 1 :(得分:0)

来自camel-seda组件(here)的文档:

  

默认情况下,SEDA端点使用单个使用者线程,但是您   可以将其配置为使用并发消费者线程。

您可以将线程池​​添加到SEDA端点,如下所示:

<from uri="seda:stageName?concurrentConsumers=5" />