【发布时间】:2018-05-22 04:48:58
【问题描述】:
在 Mule ESB 中,我尝试通过 foreach 循环转发自定义 HTTP 标头,而不将我的数据存储在会话变量中。
关于我的用例:我在 mule 中有 20 个不同的流,它们具有 HTTP 入站和 2 到 5 个 HTTP 出站。我正在尝试将大约 10 个 HTTP 标头从入站转发到所有出站。
我试图放置一个将入站变量复制到出站变量的私有流
<flow name="add_http_headers" doc:name="add headers">
<message-properties-transformer scope="outbound">
<add-message-property value="#[message.inboundProperties.X-HeaderName1]" key="X-HeaderName1"/>
</message-properties-transformer>
</flow>
它可以正常工作,除了在一种情况下:http 出站标记位于 for-each 标记中:for-each 创建一个新上下文。出站和入站变量不再可访问。但我仍然可以访问会话变量。
因此我有一个补丁,但我对它不满意: 在我的 fore-each 之前,我在会话变量中转换所有标题
<message-properties-transformer scope="session" >
<add-message-property value="#[message.inboundProperties.X-HeaderName1]" key="X-HeaderName1"/>
</message-properties-transformer>
然后在我的 for-each 标记中,我将这些会话变量重新转换为出站变量:
<message-properties-transformer scope="outbound" >
<add-message-property value="#[sessionVars.X-defaultDistributor]" key="X-defaultDistributor"/>
</message-properties-transformer>
它有效,但我有很多重复,有没有一种方法可以限制重复和转发 http 标头,即使在创建新的 mule 上下文时也是如此?
【问题讨论】: