我有一个基于Camel的应用程序,它接收请求并从缓存中给出回复,但在此过程之间它更新数据库,我希望它在不同的线程中运行,任何人都可以告诉我如何实现这一点,我尝试使用WireTap和SEDA,但它没有那样工作...任何帮助表示赞赏。
<camel:wireTap uri="seda:tap" processorRef="updateHitCountProcessor"/>
在updateHitCountProcessor中,我编写了更新表的代码 它是在同一个线程(即主路由线程)中更新数据库
答案 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" />