Почему ActiveMQ 5.14.x не может запускаться с помощью компонента camel-jms 2.18.3

Вот простой проект загрузки spring (версия 1.5.2), чтобы продемонстрировать проблему:

https://github.com/lanwen/camel-jms-activemq-test

Он имеет версию Apache Camel 2.18.3

На ветке master все работает отлично из-за activemq-camel=5.14.4 и camel-jms=2.16.3 (получает транзитно от него)

Spring загрузочное приложение запускается обычно с журналом:

2017-04-22 00:53:19.647  INFO 97217 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.18.3 (CamelContext: camel-1) is starting
2017-04-22 00:53:19.662  INFO 97173 --- [           main] o.apache.activemq.broker.BrokerService   : Apache ActiveMQ 5.14.4 (localhost, ID:lanwen-osx3.local-62145-1492811599544-0:1) is starting
2017-04-22 00:53:19.665  INFO 97173 --- [           main] o.apache.activemq.broker.BrokerService   : Apache ActiveMQ 5.14.4 (localhost, ID:lanwen-osx3.local-62145-1492811599544-0:1) started
2017-04-22 00:53:19.665  INFO 97173 --- [           main] o.apache.activemq.broker.BrokerService   : For help or more information please see: http://activemq.apache.org
2017-04-22 00:53:19.682  INFO 97173 --- [           main] o.a.activemq.broker.TransportConnector   : Connector vm://localhost started
2017-04-22 00:53:19.702  INFO 97173 --- [           main] o.a.camel.spring.SpringCamelContext      : Route: route1 started and consuming from: activemq://queue:to-write?asyncConsumer=true
2017-04-22 00:53:19.703  INFO 97173 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 1 routes, of which 1 are started.
2017-04-22 00:53:19.704  INFO 97173 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.18.3 (CamelContext: camel-1) started in 0.466 seconds
2017-04-22 00:53:19.709  INFO 97173 --- [           main] ru.yandex.test.writer.MyTestApplication  : Started MyTestApplication in 2.437 seconds (JVM running for 2.911)

Но когда вы начинаете с camel-jms=2.18.3 (в качестве основной версии верблюда, на ветке not_working)

В этом журнале произошли ошибки:

2017-04-22 00:56:38.070  INFO 97195 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.18.3 (CamelContext: camel-1) is starting
...
2017-04-22 00:56:43.590  WARN 97195 --- [ActiveMQ Task-1] o.a.a.t.failover.FailoverTransport       : Failed to connect to [tcp://localhost:61616] after: 10 attempt(s) continuing to retry.

Но если мы изменим activemq-camel на 5.13.4 на camel-jms=2.18.3, он снова отлично работает...

Почему ActiveMQ 5.14.x не работает с camel-jms 2.18.x?

Ответы

Ответ 1

Если вы посмотрите список зависимостей для последнего Camel ActiveMQ 1.15.5 (https://mvnrepository.com/artifact/org.apache.activemq/activemq-camel/5.14.5), вы увидите, что он уже имеет camel-jms как зависимость, но версия 1.16.3. Поэтому вам не нужно отдельно добавлять зависимость camel-jms 1.18.x в ваш POM, потому что она перезапишет версию 1.16.x, которую уже использует ActiveMQ, которая является совместимой.

По сути, проблема в том, что вы пытаетесь использовать более новую, несовместимую версию camel-jms. Когда вы отдельно добавляете зависимость 1.18.x camel-jms, компонент Component ActiveMQ будет использовать эту версию, которая несовместима с ее версией 1.16.x и, следовательно, ошибкой.

Если вам нужно использовать ActiveMQ, вам, вероятно, придется посмотреть, будет ли camel-jms 1.16.x работать для вас.