为什么调用请求 - 响应出站端点会覆盖入站范围中的变量?

时间:2013-06-23 23:32:53

标签: mule

我注意到如果我有这样的流程模式:

<flow name="httpIn">
    <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:9001/test/in" />
    <logger level="INFO" />
    <http:outbound-endpoint exchange-pattern="request-response" address="http://localhost:9001/test/out" />
    <logger level="INFO" />
</flow>

在调用outbound-endpoint request-response交换模式后,原始HTTP请求的入站属性会丢失。

这是正常行为吗?有没有办法为所有出站端点禁用此总体,或者此端点是否具体?

3 个答案:

答案 0 :(得分:2)

是的,这是正常行为。这里解释得很清楚:

http://blogs.mulesoft.org/mule-school-the-mulemessage-property-scopes-and-variables/

  

骡子入站属性

     

您无法设置入站属性。消息来源(例如   入站端点)在收到消息时为您设置它们。   穿越“运输障碍”骡子时,入境物业将会丢失   出站属性

     

您可以设置出站属性。当穿越“运输   屏障“,出站属性自动转入入站   属性,不再作为出站属性存在。    - 请参阅:http://blogs.mulesoft.org/mule-school-the-mulemessage-property-scopes-and-variables/#sthash.yGzTrZEQ.dpuf

答案 1 :(得分:1)

是的,Mule入境物业不会在运输过程中传播。正如本link

中所述
  • 入站属性由消息源自动生成,无法由用户设置或操作。
  • 可以由用户配置出站属性。出站属性在流程中设置,可以成为入站 消息从一个出站端点传递时的属性 通过传输流向不同流的入站端点。 (请注意,如果消息通过flow-ref传递给新流 而不是运输,出境物业将保持出境 属性而不是转换为入站属性。)

但是,请注意,您可以通过复制以下属性来保留传输之间的所有入站属性:

<copy-properties propertyName="*" />

这将复制所有属性,如果只需要很少的话,也可以指定特定的属性名称。

答案 2 :(得分:0)

Mule入站属性:这些属性由消息源或inblound端点自动设置。您无法设置它们。它们是不可变的,即。你不能对它们做任何改变。您只能访问它们,但您无法修改它们。他们在穿过“运输障碍”后迷路了

Mule出站属性:您可以设置这些属性。在越过传输障碍ike http后,出站属性会自动转换为入站属性,并且在出站范围内不再找到它们。