我有一个服务侦听队列,我希望将消息转发给完全不同的代理。这在WSO2 ESB中是否可行?如果是这样,这种配置将如何完成?我尝试使用其他经纪人的传输网址指定端点,但这不起作用......
答案 0 :(得分:1)
以下是我曾经从JMS队列中挑选并发布到另一个队列(在ActiveMQ JMS提供程序上)的WSO2 ESB代理服务配置:
<proxy xmlns="http://ws.apache.org/ns/synapse" name="JMS_to_JMS_proxy_service" transports="jms" statistics="disable" trace="disable" startOnLoad="true">
<target>
<inSequence>
<log level="full" separator="," />
<property name="OUT_ONLY" value="true" scope="default" type="STRING" />
<send>
<endpoint>
<address uri="jms:/Destination_Queue_Name?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://Your_Host:61616&transport.jms.DestinationType=queue" trace="disable">
<timeout>
<duration>30000</duration>
<responseAction>fault</responseAction>
</timeout>
<suspendOnFailure>
<initialDuration>0</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>0</maximumDuration>
</suspendOnFailure>
</address>
</endpoint>
</send>
</inSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>text/plain; charset=ISO-8859-1</default>
</rules>
</parameter>
<parameter name="transport.jms.ConnectionFactory">myQueueConnectionFactory</parameter>
<parameter name="transport.jms.DestinationType">queue</parameter>
<parameter name="transport.jms.Destination">Source_Queue_Name</parameter>
</proxy>
不要忘记在Configure - &gt;下启用JMS Transport Sender。运输菜单。此外,myQueueConnectionFactory
是指在Configure - &gt;下的参数集。运输 - &gt; JMS Transport Listener。
更新:较新版本的WSO2 ESB没有GUI选项来启用/禁用传输。为此,您必须修改 {ESB_ROOT_DIRECTORY} /repository/conf/axis2/axis2.xml 文件并取消注释与您的环境相对应的JMSListener / JMSSender(ActiveMQ,WSO2 MB,等)