2012-05-03 3 views
0

메시지에서 원래의 페이로드를 복원하려고 할 때 나는 뮬 메시지의 범위와 관련하여 혼란스러워하는이 문제에 부딪혔습니다. 아래 뮬 구성 주어 I는 초기에 페이로드가 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.을 페이로드로 남겨 둡니다.

뮬 메시지의 범위는 무엇입니까?

이 경우 scripting reference documentation은 groovy 스크립트에 originalPayload의 바인딩이 있음을 나타냅니다.

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

무슨 문제가 될 수 그러나, 2에서 변압기는 내가 예외가

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

로 교체하면?

감사

답변

1

모든 아웃 바운드 상호 작용, enricher 통해 수행하지 않는 한, 현재의 기내 메시지에 영향을 미칠 것입니다. 따라서 replacePayloadWithFoo를 호출하면 원래 메시지가 아웃 바운드 상호 작용의 결과로 바뀝니다.

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

과 :

이것은 내가 사이의 차이를 설명 할 수 없다 고 말했다

event.getMessage().getPayload() 
+0

많은 감사 :

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

것은 둘 다에 의존하기 때문에! 너 락! 메시지 범위의 주제에 대해 자세히 설명하는 문서 페이지를 가리킬 수 있습니까? originalPayload의 문제와 관련하여 재현을 돕기 위해 예제를 게시 하시겠습니까? – beluchin

+0

나는 모든 문서 페이지를 다시 생각할 수 없다 : 메시지 스코프 : (그렇다면'message.originalPayload'와'originalPayload' 사이의이 불일치에 대한 새로운 이슈를여십시오. –