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