2012-05-03 11 views
0

メッセージ内に元のペイロードを復元しようとすると、私はこの問題にぶつかり、メッセージの範囲に関して私を混乱させました。以下ラバの設定を考えると、私は最初にペイロードがtest.Name VMエンドポイントで受信されたと仮定すると、(configに1と2を参照)フローの終了時に復元するつもりだった:ミュールメッセージの対象は何ですか?

<mule ...>  
    <vm:endpoint name="replacePayloadWithFoo.Name" 
      path="replacePayloadWithFoo.Path" /> 

    <flow name="test"> 
     <vm:inbound-endpoint name="test.Name" path="test.Path" 
      exchange-pattern="request-response" /> 

     <!-- 1. Down below, I wanted to restore the payload at this point --> 

     <expression-transformer evaluator="string" 
      expression="bar" /> 

     <outbound-endpoint ref="replacePayloadWithFoo.Name" 
      exchange-pattern="request-response" /> 

     <!-- 2. The transformer below does not restore the payload at 1. -->    

     <expression-transformer evaluator="groovy" 
       expression="message.originalPayload" /> 
    </flow> 

    <flow name="replacePayloadWithFoo"> 
     <inbound-endpoint ref="replacePayloadWithFoo.Name" 
      exchange-pattern="request-response" /> 

     <expression-transformer evaluator="string" 
      expression="foo" /> 

    </flow> 

</mule> 

しかし、 testフローに入ったメッセージがreplacePayloadWithFoo発信エンドポイントで終了したように見えました。 2の変圧器はペイロードとして"foo"を残します。

ミュールメッセージの対象は何ですか?

これに加えて、scripting reference documentationは、groovyスクリプトでoriginalPayloadのバインディングがあることを示します。ただし、2の変圧器が

<expression-transformer evaluator="groovy" expression="originalPayload" /> 

に置き換えている場合、私は例外を取得:

org.mule.api.expression.RequiredValueException: Expression Evaluator "groovy" 
with expression "originalPayload" returned null but a value was required. 

問題である可能性があり何?

おかげ

答えて

1

どれアウトバウンド相互作用は、enricherを介して実行しない限り、現在飛行中のメッセージに影響します。このため、replacePayloadWithFooを呼び出すと、元のメッセージがアウトバウンド相互作用の結果に置き換えられます。

これは言った、私は間の食い違いを説明することはできません:彼らは両方に依存しているため

<expression-transformer evaluator="groovy" expression="originalPayload" /> 

<expression-transformer evaluator="groovy" expression="message.originalPayload" /> 

event.getMessage().getPayload() 
+0

感謝を!あなたはロック!あなたは、メッセージスコープのトピックを詳述するドキュメントページを指すことができますか? originalPayloadの問題については、再現を助けるための例を投稿したいですか? – beluchin

+0

私はどのようなドキュメントページについても考えることができません:メッセージスコープ:(そして、 'message.originalPayload'と' originalPayload'の間のこの不一致について新しい問題を開きます。 –

関連する問題