WSO2 ESB使用jms故障切换到收件人列表

WSO2 ESB使用jms故障切换到收件人列表,wso2,wso2esb,synapse,Wso2,Wso2esb,Synapse,我正在尝试使用recipientList发送到多个JMS端点。我使用ActiveMQ作为消息代理。我的问题是:无论我是否将URL设置为ActiveMQ的单个节点,当我将故障转移端点设置为逗号分隔时,它都能完美地工作,我只知道它会在故障转移URL内拆分逗号。有没有一种方法可以跳过故障转移中逗号字符的拆分 这项工作: jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.

我正在尝试使用recipientList发送到多个JMS端点。我使用ActiveMQ作为消息代理。我的问题是:无论我是否将URL设置为ActiveMQ的单个节点,当我将故障转移端点设置为逗号分隔时,它都能完美地工作,我只知道它会在故障转移URL内拆分逗号。有没有一种方法可以跳过故障转移中逗号字符的拆分

这项工作:

jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=tcp://myIP:61616&transport.jms.DestinationType=queue
但这不起作用,因为它分割了逗号

jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP:61616,tcp://myIP2:61616)&transport.jms.DestinationType=queue
在我的例子中,我用“,”连接了多个URI,使recipientList工作,但故障转移中的逗号使其失败

附近有工作吗

谢谢


安东尼奥

你可以试试下面的方法,而不是逗号

<send>
 <endpoint key="jmsMBendpoint1"/>
</send>
<send>
 <endpoint key="jmsMBendpoint2"/>
</send>

或者,您可以使用将单个消息发送到多个端点。定义收件人列表后,将taht存储为localentry,并将其作为端点键提供

更多

我不知道recipientlist的解决方法是什么,但实现您需求的另一种方法是:

<property name="EIP_LIST" type="OM">
    <list xmlns="">
        <epr>jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP:61616,tcp://myIP2:61616)&amp;transport.jms.DestinationType=queue</epr>
        <epr>jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP3:61616,tcp://myIP4:61616)&amp;transport.jms.DestinationType=queue</epr>
    </list>
</property>
<iterate expression="$ctx:EIP_LIST//epr">
    <target>
        <sequence>
            <header name="To" expression="$body/epr"/>
            <send/>
        </sequence>
    </target>
</iterate>      

jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP:61616,tcp://myIP2:61616)&;transport.jms.DestinationType=队列
jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory&java.naming.provider.url=failover:(tcp://myIP3:61616,tcp://myIP4:61616)&;transport.jms.DestinationType=队列

您只需要动态地编写EIP_列表的内容

Hi,在这种情况下,我使用的是运行时计算的动态端点,我已经使用收件人列表进行发送,因此我不能使用多个发送,因为在应用程序执行之前,我甚至不知道应该使用多少个发送。我已经检查了文档和代码,无法得到问题的答案。谢谢你的回复!我可能会选择这个解决方案。非常感谢你!