我尝试使用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
在我的情况下,我将多个uris连接到上面的','使recipientList工作,但故障转移中的逗号使其失败。
有解决办法吗?
谢谢,
安东尼奥
答案 0 :(得分:0)
您可以尝试使用以下代替逗号
<send>
<endpoint key="jmsMBendpoint1"/>
</send>
<send>
<endpoint key="jmsMBendpoint2"/>
</send>
或者您可以使用Recipienlist endpoint向多个端点发送单个邮件。将收件人列表存储taht定义为localentry并将其作为端点密钥提供。
答案 1 :(得分:0)
我不知道收件人列表的解决方法是什么,但另一种满足您需求的方法是:
<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>
您只需要动态撰写EIP_LIST的内容