1

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

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

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

4

2 回答 2

2

你需要做

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

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

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

您可以在以下网址找到有关窃听器页面的详细信息: http: //camel.apache.org/wire-tap

于 2013-10-22T06:12:23.567 回答
0

从 camel-seda 组件的文档(这里):

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

您可以像这样将线程池添加到 SEDA 端点:

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

于 2013-10-21T14:48:38.103 回答