1

リクエストを受け取り、キャッシュから返信するキャメルベースのアプリケーションがありますが、このプロセスの間に、別のスレッドで実行したいデータベースを更新します。これを達成する方法を教えてください。および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 コンポーネントのドキュメントから ( here ):

デフォルトでは、SEDA エンドポイントは単一のコンシューマ スレッドを使用しますが、コンシューマ スレッドを同時に使用するように構成できます。

次のように、SEDA エンドポイントにスレッド プールを追加できます。

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

于 2013-10-21T14:48:38.103 に答える