给出下面的简单配置,在该配置中,我连接到远程服务器以接收具有持久订阅的多个主题,这些主题在本地被桥接以供使用。
对于我希望订阅的每个其他主题,我需要在clientId
块中设置一个不同的route
。
<route id="Inbound_TOPIC_A">
<from uri="upstream:topic:TOPICa?clientId=myclientid&durableSubscriptionName=mysubscriber1"/>
<to uri="localAMQ:topic:LOCAL_A"/>
</route>
<route id="Inbound_TOPIC_B">
<from uri="upstream:topic:TOPICb?clientId=myclientid1&durableSubscriptionName=mysubscriber2"/>
<to uri="localAMQ:topic:LOCAL_B"/>
</route>
<bean id="upstream" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="failover:(tcp://upstream-server:61619)?initialReconnectDelay=30000&jms.watchTopicAdvisories=false"/>
<property name="username" value="username"/>
<property name="password" value="password"/>
</bean>
通过这样做,每个订阅还会打开与上游提供程序的另一个连接,这并不理想,我想避免。
我试图将clientId
添加到upstream
连接对象中,以便可以使用一次,然后我可以为要使用的每个主题简单地指定唯一的durableSubscriptionName
名称。>
这直接在AMQ中是微不足道的,因此我需要一个基于以上配置的示例,以帮助我。
我尝试按照以下方式建立与上游服务器的连接,但是这些都不起作用,所有这些都会导致AMQ / Camel能够启动,或者由于无效的配置对象而在启动时崩溃。尝试此操作时,我显然已从上面的路线中删除了clientId
语句!
<property name="brokerURL" value="failover:(tcp://upstream-server:61619)?initialReconnectDelay=30000&jms.watchTopicAdvisories=false&jms.clientId=myclientid"/>
<property name="brokerURL" value="failover:(tcp://upstream-server:61619?clientId=myclientid)?initialReconnectDelay=30000&jms.watchTopicAdvisories=false"/>
也尝试将<property name="clientId" value="myclientid"/>
添加到连接中,但这也不起作用。在启动时,它仍然尝试产生多个连接。
我已经尝试了所有带有和不带有jms.
部分的版本,但是它们似乎都不起作用。我确定这是简单/愚蠢的事情,但是我宁愿在过去的一两天中将其与Camel相提并论,也不确定如何将其设置为所需的值。