WSO2 ESB使用jms故障切换到收件人列表
我正在尝试使用recipientList发送到多个JMS端点。我使用ActiveMQ作为消息代理。我的问题是:无论我是否将URL设置为ActiveMQ的单个节点,当我将故障转移端点设置为逗号分隔时,它都能完美地工作,我只知道它会在故障转移URL内拆分逗号。有没有一种方法可以跳过故障转移中逗号字符的拆分 这项工作:WSO2 ESB使用jms故障切换到收件人列表,wso2,wso2esb,synapse,Wso2,Wso2esb,Synapse,我正在尝试使用recipientList发送到多个JMS端点。我使用ActiveMQ作为消息代理。我的问题是:无论我是否将URL设置为ActiveMQ的单个节点,当我将故障转移端点设置为逗号分隔时,它都能完美地工作,我只知道它会在故障转移URL内拆分逗号。有没有一种方法可以跳过故障转移中逗号字符的拆分 这项工作: jms:/myQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.
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)&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)&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,在这种情况下,我使用的是运行时计算的动态端点,我已经使用收件人列表进行发送,因此我不能使用多个发送,因为在应用程序执行之前,我甚至不知道应该使用多少个发送。我已经检查了文档和代码,无法得到问题的答案。谢谢你的回复!我可能会选择这个解决方案。非常感谢你!