经纪人 url 中的多个选项 - 正确的语法

Multiple options in broker url - correct syntax

我有一个嵌入式代理如下;

<bean id="Server1_remote" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="failover:(tcp://server1:61616,tcp://server1:61616)?keepAlive=true" />
</bean>

一切正常,但我需要为故障转移连接添加更多选项。

如果我这样做;

<bean id="Server1_remote" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="failover:(tcp://server1:61616,tcp://server1:61616)?keepAlive=true&initialReconnectDelay=5000" />
</bean>

无法启动服务器并出现错误;

ERROR: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 108 in XML document from class path resource [activemq.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 108; columnNumber: 132; The reference to entity "initialReconnectDelay" must end with the ';' delimiter.

好的 - 所以如果我这样做 "?keepAlive=true&initialReconnectDelay=5000;" 我仍然会遇到同样的错误。

也试过了(注意到these 2 pages之间的细微差别);

<bean id="Server1_remote" class="org.apache.activemq.ActiveMQConnectionFactory">
    <property name="brokerURL" value="failover:(tcp://server1:61616?transport.tcpNoDelay=true&transport.keepAlive=true,tcp://server1:61616?transport.tcpNoDelay=true&transport.keepAlive=true)?initialReconnectDelay=5000" />
</bean>

我浏览了 AMQ 网站,但在一个字符串中看不到 example 多个选项?!?!

谁能告诉我正确的语法,以便我能够设置多个选项,或者指向某个地方的清晰示例。

为了完整起见,桥接连接的另一部分是;

<jmsBridgeConnectors>
    <jmsTopicConnector name="server1_feeds" outboundTopicConnectionFactory="#Server1_remote" >
        <inboundTopicBridges>
            <inboundTopicBridge consumerName="vm0-topic1" inboundTopicName="TOPIC1"
            localTopicName="TOPIC1_OUT" />
        </inboundTopicBridges>
    </jmsTopicConnector>
</jmsBridgeConnectors>

您收到的错误来自 Spring,而不是来自任何 ActiveMQ 代码。例外是 org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException,这是由于某种 Spring 配置问题而不是您的 ActiveMQ URL 语法。

我认为您的问题出在您添加到配置中的 & 字符上。它需要在 XML 中转义为 &amp; 因为它是保留字符。