Wso2 如何生成错误消息并将其发送给jms提供程序
我正在评估WSO2 esb并尝试以下简单用例: jms->(esb)->WebService(WSO2应用服务器上的HelloService) 将ws响应发送到jms队列(端点EPQ\U ESB\U OUT) 将错误发送到jms队列(端点EPQ\U ESB\U ERR) 当我停止WSO2应用程序服务器时,会调用故障序列并向EPQ_ESB_ERR发送一条消息,但消息始终为空 我尝试使用makefault和buildfactory中介,但在这两种情况下都失败了(两种情况下都是空消息) 我的代理人:Wso2 如何生成错误消息并将其发送给jms提供程序,wso2,wso2esb,Wso2,Wso2esb,我正在评估WSO2 esb并尝试以下简单用例: jms->(esb)->WebService(WSO2应用服务器上的HelloService) 将ws响应发送到jms队列(端点EPQ\U ESB\U OUT) 将错误发送到jms队列(端点EPQ\U ESB\U ERR) 当我停止WSO2应用程序服务器时,会调用故障序列并向EPQ_ESB_ERR发送一条消息,但消息始终为空 我尝试使用makefault和buildfactory中介,但在这两种情况下都失败了(两种情况下都是空消息) 我的代理人:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="Test04Proxy02" transports="jms" startOnLoad="true" trace="enable">
<target>
<endpoint key="EPW_HelloService"/>
<inSequence>
<log>
<property name="STEP" value="==== INseq"/>
</log>
</inSequence>
<outSequence>
<property name="OUT_ONLY" value="true"/>
<log>
<property name="STEP" value="==== OUTseq"/>
</log>
<send>
<endpoint key="EPQ_ESB_OUT"/>
</send>
</outSequence>
<faultSequence>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<log level="full">
<property name="STEP" value="==== FAULTseq"/>
<property name="ERROR_CODE" expression="get-property('ERROR_CODE')"/>
<property name="ERROR_MESSAGE" expression="get-property('ERROR_MESSAGE')"/>
<property name="ERROR_DETAIL" expression="get-property('ERROR_DETAIL')"/>
</log>
<payloadFactory>
<format>
<ns:text xmlns:ns="http://myns">$1</ns:text>
</format>
<args>
<arg xmlns:ns="http://myns"
evaluator="xml"
expression="get-property('ERROR_MESSAGE')"/>
</args>
</payloadFactory>
<send>
<endpoint key="EPQ_ESB_ERR"/>
</send>
</faultSequence>
</target>
</proxy>
$1
任何帮助都将不胜感激。谢谢。猜猜看:可能您在名称空间方面遇到了一些问题。WSO似乎广泛使用了
ns
名称空间本身,因此我会尝试在您的有效负载工厂中使用不同的名称空间,例如
<payloadFactory>
<format>
<myns:text xmlns:myns="http://myns">$1</myns:text>
</format>
<args>
<arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
</args>
</payloadFactory>
$1
(实际上,在
元素中不需要名称空间定义)问题已解决:
取代。。。借
<makefault version="soap11">
<code expression="get-property('ERROR_CODE')"/>
<reason expression="get-property('ERROR_MESSAGE')"/>
</makefault>
并补充说
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
内容类型
应用程序/xml
就在结束标记之前
我真的不知道为什么它现在可以使用这个参数…仍然通过更改名称空间或根本不使用名称空间来清空队列中的消息。