Установка идентификатора клиента для компонента исходящего соединения Camel - PullRequest
0 голосов
/ 29 июня 2019

Учитывая простую конфигурацию ниже, где я подключаюсь к удаленному серверу, чтобы получать несколько тем с надежными подписками, которые подключаются локально для потребления.

Для каждой дополнительной темы, на которую я хочу подписаться, мне нужно установить другой 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 напрямую, поэтому мне нужен пример, основанный на моей конфигурации выше в Camel, чтобы помочь мне, пожалуйста.

Я попытался установить соединение с вышестоящим сервером, как показано ниже, но ни одна из этих работ не приводит к запуску 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. и без нее, но ни одна из них не работает. Я уверен, что это что-то простое / глупое, но я скорее был брошен в глубокий конец с Верблюдом в последние день или два, и я не уверен, как я должен установить это по желанию.

...