Я пытаюсь настроить Apache Camel с ActiveMQ для соединения между очередью на моем сервере ActiveMQ и очередью на удаленном сервере ActiveMQ.Пока все просто.Вот соответствующий бит моего camel.xml
:
<camelContext xmlns="http://camel.apache.org/schema/spring" id="camel">
<route>
<from uri="local:Request"/>
<to uri="remote:Request"/>
</route>
</camelContext>
<bean id="local" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<bean id="remote" class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="brokerURL" value="tcp://remote:61616"/>
</bean>
Я проверил это на двух серверах, которые я контролирую, и он отлично работает.Тем не менее, удаленный сервер, к которому я пытаюсь подключиться, - это один, который я не контролирую, и (вероятно, из-за плохо написанной реализации авторизации на заказ) он демонстрирует поведение, которое, кажется, неотлично работает с Camel.
Проблема заключается в следующем: удаленный сервер использует все подключенные к нему экземпляры Producer
, имеющие значение для указанного назначения , тогда как по умолчанию Camel, кажется, создает неопознанный производитель ( JMS-ссылка для контекста ).Если создается неопознанный производитель, этот удаленный сервер просто разрывает соединение.
Поэтому у меня возникает вопрос: есть ли способ заставить Camel не использовать неопознанный производитель, желательно без необходимости изменять исходный код Camel?