2016-08-17 3 views
0

をチャネルに私が期待する通り。ルートは私が「設定-2.xmlのコンテンツをコメントアウトした場合、それが動作</p> <blockquote> <p>'startChannel-> router1-> outChannel'</p> </blockquote> <p>を介してメッセージを送信したい設定

私は「コンフィグ-2.xmlのコンテンツを有効にすると、私はそれが

'startChannel-> router1-> routerChannel-> router2-> outChannel'

を介してメッセージを送信する必要があります期待しかし、私は例外に次のようになる。

EL1008E:(POS 0):施設または 'routerChannel' フィールドはタイプ の オブジェクト上で見つけることができない 'org.springframework.integration.message.GenericMessage' - そうでないかもしれない 公共?

メッセージを 'routerChannel'にルーティングするにはどうすればよいですか?

CONFIG-1.xml

<int:channel id="startChannel"/> 

<int:router id="router1" 
      input-channel="startChannel" 
      default-output-channel="outChannel" 
      resolution-required="false" 
      expression="routerChannel"/> 

<int:channel id="outChannel"/> 

CONFIG-2.xml

<int:channel id="routerChannel"/> 
<int:router id="router2" 
      input-channel="routerChannel" 
      resolution-required="true" 
      expression="payload.paymentType"> 
    <int:mapping value="CASH" channel="cashPaymentChannel"/> 
    <int:mapping value="CREDIT" channel="authorizePaymentChannel"/> 
    <int:mapping value="DEBIT" channel="authorizePaymentChannel"/> 
</int:router> 
+0

詳細を入力してください。 「私はそれがうまくいくはずだと思うが、私はこの例外を得る」等々。そして、「存在しない」という意味がはっきりしない。オプションの設定ですか?あなたは本当に ''そのxmlにどうすればうまくいくのですか? –

答えて

1

あなたのSPELは次のようにする必要があります

expression="@routerChannel"/> 

それは我々がそのBean参照プロトコルを尊重しなければならない実行時の式ですので。

1

ルータの式が評価され、結果は、文字列(単一チャネル)または文字列のコレクションでなければなりません(複数チャネル)。あなたのユースケースでは、ルータ式はconfig1.xmlには意味がありません。ダイレクトチャネル値の場合は、ここではルータを使用しません。

+0

私の答えを見てください。それが奇妙に見えても、私はそのような使い方があるかもしれないと確信しています。そして、私は表現ロジックが、このトピックで簡単にするよりもはるかに複雑であることを願っています。 –

関連する問題

 関連する問題