在出站骆驼连接组件上设置客户端ID

时间:2019-06-29 15:10:30

标签: apache-camel activemq

给出下面的简单配置,在该配置中,我连接到远程服务器以接收具有持久订阅的多个主题,这些主题在本地被桥接以供使用。

对于我希望订阅的每个其他主题,我需要在clientId块中设置一个不同的route

<route id="Inbound_TOPIC_A">
        <from uri="upstream:topic:TOPICa?clientId=myclientid&amp;durableSubscriptionName=mysubscriber1"/>
        <to uri="localAMQ:topic:LOCAL_A"/>
    </route>

    <route id="Inbound_TOPIC_B">
        <from uri="upstream:topic:TOPICb?clientId=myclientid1&amp;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&amp;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&amp;jms.watchTopicAdvisories=false&amp;jms.clientId=myclientid"/>
<property name="brokerURL" value="failover:(tcp://upstream-server:61619?clientId=myclientid)?initialReconnectDelay=30000&amp;jms.watchTopicAdvisories=false"/>

也尝试将<property name="clientId" value="myclientid"/>添加到连接中,但这也不起作用。在启动时,它仍然尝试产生多个连接。

我已经尝试了所有带有和不带有jms.部分的版本,但是它们似乎都不起作用。我确定这是简单/愚蠢的事情,但是我宁愿在过去的一两天中将其与Camel相提并论,也不确定如何将其设置为所需的值。

0 个答案:

没有答案