2

メインの Service Activator に入る前に PriorityQueue を使用する高負荷 (外部ネットワーク呼び出しの割り当て) 統合フローがあります。システム負荷を改善するためにエグゼキュータ チャネルを追加したいのですが、これらのチャネルを組み合わせる簡単な方法がわかりません。

<int:channel id="monitorInPriorityUpdate"> 
    <int:priority-queue/>
</int:channel>

<int:transformer id="monitorLogTransformerStub"
    input-channel="monitorInPriorityUpdate" output-channel="monitorInUpdate"
    expression="payload" />

<int:channel id="monitorInUpdate">
    <int:dispatcher task-executor="monitorExecutor"/>
</int:channel>

これを機能させるには、2 つの追加コンポーネントを作成する必要がありましたが、新しいコンポーネントを追加せずに、いくつかの Spring Integration チャネルを 1 つに結合する方法はありますか?

4

1 に答える 1

2

実際には、十分な情報がないようです。しかし、私は推測しようとします。あなたはこれを必要とします:

<int:channel id="priorityChannel">
    <int:priority-queue/>
</int:channel>

<int:bridge input-channel="priorityChannel" output-channel="executorChannel">
    <int:poller fixed-rate="100"/>
</int:bridge>

<int:channel id="executorChannel">
    <int:dispatcher task-executor="threadPoolExecutor"/>
</int:channel>

ここでは、Bridgeを使用してメッセージをあるチャネルから別のチャネルにシフトします。

またはこれ:

<int:channel id="priorityChannel">
    <int:priority-queue/>
</int:channel>

<int:service-activator input-channel="priorityChannel" ref="service">
    <int:poller fixed-rate="100" task-executor="threadPoolExecutor"/>
</int:service-activator>

ここでは、Poller を使用して、priorityChannel から taskExecutor にメッセージを配置するだけです。

1 つのチャンネルに懸念事項を混在させるのは異常です。各チャネル タイプは、独自の具体的な役割を果たします。あなたが達成したいのは、タイピングを最小限に抑えることではありませんが、それがたまたまあなたにとっての解決策であったとしても、それは非常に複雑で堅牢ではありません.

于 2013-12-10T09:24:28.127 に答える