在尝试恢复消息中的原始有效负载时,我遇到了这个问题,这让我对 mule 消息的范围感到困惑。鉴于下面的 mule 配置,我最初假设在test.Name
vm 端点收到的有效负载将在流程结束时恢复(请参阅配置中的 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"
作为有效载荷离开。
mule 消息的范围是什么?
顺便说一句,脚本参考文档表明originalPayload
在 groovy 脚本中有一个绑定。但是,如果将 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.
可能是什么问题?
谢谢