1

以下に示すように、スプリッターを構成しました。入力チャネルの値は、春の統合の一般的なメッセージになります

一般的なメッセージ

Map<String,Object> payload;
    values are   
      serviceRequest=Some Object
      messageBusmessages= Some Object 

MessageHeaders headers;

今私の要件は、キーでマップされたペイロードから値を取得し、1 つを messagebus.channel に、もう 1 つを servicebody.channel に入れたいようなものです。

<int:splitter input-channel="outChannel"
    output-channel="messagebus.channel">
</int:splitter>

<int:splitter input-channel="outChannel"
    output-channel="servicebody.channel">
</int:splitter>
4

3 に答える 3

3

式を使用して、ペイロード マップからオブジェクトを取得し、必要に応じて以下のオプションをチャネルに配置できます。

<int:splitter input-channel="outChannel" expression="payload.get('messagebusMesssages')"
    output-channel="message.channel">
</int:splitter>

<int:splitter input-channel="outChannel" expression="payload.get('serviceRequest')"
    output-channel="servicebody.channel">
</int:splitter>

<int:service-activator input-channel="servicebody.channel"
    ref="SITestAction" method="action" />
于 2013-04-25T13:11:26.220 に答える
0

分割する必要はないと思います。コンテンツ ベースのルーティングが必要だと思います。可能であれば、メッセージの着信ヘッダーに何かを追加し、すぐに使用できる Spring 統合ヘッダー値ルーターを使用します。

<header-value-router input-channel="routingChannel" header-name="testHeader">
  <mapping value="serviceRequest" channel="messagebus.channel" />
  <mapping value="messageBusmessages" channel="servicebody.channel" />
</header-value-router>

これがあなたのニーズに合わない場合。以下のリンクを見て、Spring Integration のルーティング用のすべてのオプションを確認してください。

http://static.springsource.org/spring-integration/docs/2.0.0.RELEASE/reference/html/messaging-routing-chapter.html

于 2013-04-25T08:39:04.707 に答える
0

<publish-subscribe-channel/>適切な式を持つ s である 2 つのサブスクライバーでa を使用できます<transformer/>...

<int:publish-subscribe-channel id="outChannel"/>

<int:transformer input-channel="outChannel" outputChannel="messagebus.channel"
    expression="payload.['foo']"/>

<int:transformer input-channel="outChannel" outputChannel="servicebody.channel"
    expression="payload.['bar']"/>

これは順次処理されます。それらを並行して実行したい場合は、 に atask-executorを付け<publish-subscribe-channel/>ます。

于 2013-04-25T12:25:30.607 に答える