可以在URI中配置ActiveMQ的故障转移传输: http://activemq.apache.org/failover-transport-reference.html
在代理服务中,您可以使用:
<address uri="jms:/MyQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.provider.url=failover:(tcp://localhost:61616)?startupMaxReconnectAttempts=10&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
这适用于一个配置参数。但是,我找不到有多个参数的方法。假设我也想配置超时参数。我试过了:
<address uri="jms:/MyQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.provider.url=failover:(tcp://localhost:61616)?startupMaxReconnectAttempts=10&timeout=10&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
这不起作用,因为timeout参数不是provider.url参数的一部分。
我也尝试过:
<address uri="jms:/MyQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.provider.url=failover:(tcp://localhost:61616)?startupMaxReconnectAttempts=10;timeout=10&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
这不起作用,因为activemq不支持使用';'而不是'&amp;'作为分隔符
然后我尝试了
<address uri="jms:/MyQueue?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.provider.url=failover:(tcp://localhost:61616)?startupMaxReconnectAttempts=10%26timeout=10&java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
这不起作用,因为wso2在将provider.url参数传递给activemq之前不会对其进行url解码。
如何在activeMQ的故障转移传输配置URI中传递多个参数?