WSO2 ESB:header设置在";依次;迷失在;外序;
我在WSO2中的消息中介方面遇到了一个很大的问题。事情是这样的 在insequence中,我在消息中设置了一个传输头,其中包含messageID,如下所示:WSO2 ESB:header设置在";依次;迷失在;外序;,wso2,wso2esb,Wso2,Wso2esb,我在WSO2中的消息中介方面遇到了一个很大的问题。事情是这样的 在insequence中,我在消息中设置了一个传输头,其中包含messageID,如下所示: <property name="MediationMessageId" scope="transport" expression="get-property('MessageID')"/> 我做错什么了吗 非常感谢 编辑:输入顺序和输出顺序在两个单独的文件中。不知道这是否会产生影响。您的属性在正常范围内,而不是在transpo
<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进行了更改,它也没有给出任何结果。我编辑了我的问题,以强调我的输入和输出序列在两个单独的文件中,我不知道这是否会对解决方案产生影响。感谢解释,这是我在睡了一个好觉后得出的结论。将此标记为已接受答案:)