来自 属性 的 WSO2 ESB 负载
WSO2 ESB payload from property
我正在尝试从 属性 内容创建有效载荷:
<payloadFactory media-type="xml">
<format></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
WSO2 ESB 不接受此作为有效负载格式。我该怎么做才能实现这一目标?
您不能为此使用 Payload Factory。它需要像这样的包装 XML 标签。
<payloadFactory media-type="xml">
<format><Root></Root></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
但是你可以用 Enrich mediator 做你想做的事。
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
Here 是一个相似的样本。
可能是因为 'Response' 克洛维斯的类型。
我正在用这个,没发现问题。
<property description="requestBk" expression="json-eval($.)" name="requestBk" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format></format>
<args>
<arg evaluator="xml" expression="$ctx:requestBk"/>
</args>
</payloadFactory>
另一个提示。使用 $ctx:
而不是 get-property
方法以获得更好的性能。因为 get-property
也在 registry
中查找。
是的!正如 Bhathiya 和 Maria 建议的那样,您也可以使用 Enrich mediator
,如下所述。
使用 Enrich mediator
.
将原始负载复制到 属性
<enrich>
<source clone="false" type="body"/>
<target action="replace" type="property" property="ORGINAL_PAYLOAD"/>
</enrich>
然后,每当您需要原始负载时,您就可以使用 Enrich mediator
将消息正文替换为此 属性 值,如下所示:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
我正在尝试从 属性 内容创建有效载荷:
<payloadFactory media-type="xml">
<format></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
WSO2 ESB 不接受此作为有效负载格式。我该怎么做才能实现这一目标?
您不能为此使用 Payload Factory。它需要像这样的包装 XML 标签。
<payloadFactory media-type="xml">
<format><Root></Root></format>
<args>
<arg evaluator="xml" expression="get-property('Response')"/>
</args>
</payloadFactory>
但是你可以用 Enrich mediator 做你想做的事。
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
Here 是一个相似的样本。
可能是因为 'Response' 克洛维斯的类型。 我正在用这个,没发现问题。
<property description="requestBk" expression="json-eval($.)" name="requestBk" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format></format>
<args>
<arg evaluator="xml" expression="$ctx:requestBk"/>
</args>
</payloadFactory>
另一个提示。使用 $ctx:
而不是 get-property
方法以获得更好的性能。因为 get-property
也在 registry
中查找。
是的!正如 Bhathiya 和 Maria 建议的那样,您也可以使用 Enrich mediator
,如下所述。
使用 Enrich mediator
.
<enrich>
<source clone="false" type="body"/>
<target action="replace" type="property" property="ORGINAL_PAYLOAD"/>
</enrich>
然后,每当您需要原始负载时,您就可以使用 Enrich mediator
将消息正文替换为此 属性 值,如下所示:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>