WSO2 ESB:header设置在";依次;迷失在;外序;

WSO2 ESB:header设置在";依次;迷失在;外序;,wso2,wso2esb,Wso2,Wso2esb,我在WSO2中的消息中介方面遇到了一个很大的问题。事情是这样的 在insequence中,我在消息中设置了一个传输头,其中包含messageID,如下所示: <property name="MediationMessageId" scope="transport" expression="get-property('MessageID')"/> 我做错什么了吗 非常感谢 编辑:输入顺序和输出顺序在两个单独的文件中。不知道这是否会产生影响。您的属性在正常范围内,而不是在transpo

我在WSO2中的消息中介方面遇到了一个很大的问题。事情是这样的

在insequence中,我在消息中设置了一个传输头,其中包含messageID,如下所示:

<property name="MediationMessageId" scope="transport" expression="get-property('MessageID')"/>
我做错什么了吗

非常感谢


编辑:输入顺序和输出顺序在两个单独的文件中。不知道这是否会产生影响。

您的属性在正常范围内,而不是在transportscope(消息头等所在的位置)内,因此您应该像这样访问它:
$ctx:MediationMessageId


还有一个输入错误,您在尝试使用所有小写字母访问时使用CamelCase定义了属性:)

在使用调用或发送中介调用后端服务后,传输头将消失。后端在响应上设置自己的传输(响应)头

如果您希望在调用/发送中介程序后,您的值仍然可用,则需要在Synapse(默认范围)中进行设置。这对于整个事务都存在。您可以将“default”指定为作用域,也可以完全不指定,它将被设置为Synapse

如果您还需要将该属性作为传输头与消息一起发送(这是传输作用域所做的),则必须将其设置两次。一次在默认范围内,一次作为传输头。例如:

<property name="X-MediationMessageId" scope="transport" expression="get-property('MessageID')"/>
<property name="MediationMessageId" scope="default" expression="get-property('MessageID')"/>

要检索,请使用:

<payloadFactory media-type="json">
    <format>{"mediationmessageid": "$1"}</format>
    <args>
        <arg evaluator="xml" expression="$ctx:MediationMessageId"/>
    </args>
</payloadFactory> 

{“mediationmessageid”:“$1”}

好吧,我流了很多汗和眼泪,终于打败了怪物

以下是顺序中的工作配置:

<property expression="get-property('MessageID')" name="MediationMessageId" scope="default" type="STRING"/>
<payloadFactory media-type="json">
    <format>{"MediationMessageId": "$1"}</format>
    <args>
        <arg evaluator="xml" expression="get-property('default', 'MediationMessageId')"/>
    </args>
</payloadFactory>

和一个用于输出序列:

<property expression="get-property('MessageID')" name="MediationMessageId" scope="default" type="STRING"/>
<payloadFactory media-type="json">
    <format>{"MediationMessageId": "$1"}</format>
    <args>
        <arg evaluator="xml" expression="get-property('default', 'MediationMessageId')"/>
    </args>
</payloadFactory>

{“MediationMessageId”:“$1”}
这只是对属性范围的混淆


感谢所有阅读并思考过这个问题的人。

等等,当我指定“scope=transport”时,为什么我的属性在正常范围内?无论如何,我对CamelCase和default score进行了更改,它也没有给出任何结果。我编辑了我的问题,以强调我的输入和输出序列在两个单独的文件中,我不知道这是否会对解决方案产生影响。感谢解释,这是我在睡了一个好觉后得出的结论。将此标记为已接受答案:)