有多种方法可以保存 mule 消息及其属性,以便在需要时检索它。在您的情况下,您可以将整个 Mule 消息保存在变量中并在需要时检索它,例如:
<flow name="test">
<http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="1234" path="test" doc:name="HTTP"/>
<!-- You save your entire message in a session variable named entireMessage before calling a subflow-->
<set-session-variable variableName="entireMessage" value="#[message.payload]" />
<!-- You can now call your Sub flow -->
<jersey:resources doc:name="REST">
<component class="com.Test" />
</jersey:resources>
</flow>
在上述流程中,您将 Mule 消息存储在名为 entireMessage 的会话变量中。您可以在任何需要的任何流程中轻松检索此会话变量的值,如下所示:-
<logger level="INFO" message="#[sessionVars['entireMessage']]"/>
这将打印你的骡消息
还有一种替代方法可以在 http 标头被更改之前存储它。
您还可以使用以下内容:-
<flow name="test">
<http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="1234" path="test" doc:name="HTTP"/>
<!-- You copy all the HTTP headers before calling a subflow-->
<copy-properties propertyName="http.*" doc:name="Copy All HTTP Headers"/>
<!-- You can now call your Sub flow -->
<jersey:resources doc:name="REST">
<component class="com.Test" />
</jersey:resources>
</flow>
上述流程将在调用任何其他流程之前复制所有 HTTP 标头
更新流程:-
如果您的 Jersy 组件需要原始未更改的有效负载,请用原始有效负载覆盖当前有效负载 strong> 使用 set payload 组件
存储在会话变量中
<flow name="test">
<http:inbound-endpoint exchange-pattern="request-response" host="0.0.0.0" port="1234" path="test" doc:name="HTTP"/>
<!-- You save your entire message in a session variable named entireMessage before calling a subflow-->
<set-session-variable variableName="entireMessage" value="#[message.payload]" />
<!-- You can now call your Sub flow -->
<!-- overwrite current payload with original unaltered payload -->
<set-payload value="#[sessionVars['entireMessage']]" doc:name="Set Payload"/>
<jersey:resources doc:name="REST">
<component class="com.Test" />
</jersey:resources>
</flow>