Я использую ActiveMQ Artemis версии 2.6.2 и использую Apache Camel для маршрутизации сообщений.
Когда я подключаю Camel с jms-компонентом в AMQ, почему-то в ActiveMQ Artemis создается новая очередь с префиксом jms.queue.
.
Я знаю, что если я добавлю следующий код на акцептор в broker.xml
, проблема будет решена. Но, к сожалению, у меня нет доступа к этому.
anycastPrefix=jms.queue.;multicastPrefix=jms.topic.
Есть ли способ решить это в Java-коде? Я пробовал эти шаги, но безуспешно.
from("amq:QUEUE.TEST").setProperty("anycastPrefix", simple("jms.queue."))
from("amq:jms:queue:QUEUE.TEST")
Причина создания очереди с префиксом jms.queue.
почти наверняка заключается в том, что Camel использует клиент Artemis 1.x вместо клиента 2.x. Клиент 1.x жестко запрограммирован на использование префиксов jms.queue.
и jms.topic.
.
Как вы заметили, самый простой способ решить эту проблему — настроить префиксы на соответствующем акцепторе в broker.xml
. Я не знаю, как решить эту проблему в коде Java. Я думаю, что вам лучше всего просто обновить клиентскую реализацию Artemis, которую использует Camel.
Ничто в клиенте Artemis 2.x не будет использовать префикс по умолчанию. Поэтому я подозреваю, что либо вы на самом деле не обновили клиентскую библиотеку должным образом, либо каким-то образом вручную устанавливаете префикс.
Я только что обновил зависимости artemis-jms-client, artemis-core-client и до 2.6.2 в моем pom.xml и подтвердил, что пакет был сгенерирован с этими версиями.
Можете ли вы создать репо на GitHub с минимальный воспроизводимый пример?
Привет @Justin, ты был прав. На моей машине сборка получала версию 2.6.2, но на сервере Дженкинс получал кешированную версию 1.3.0. Решил проблему с кешем больше нет. Спасибо!
Спасибо за внимание. Я был довольно озадачен раньше. :)
Я обновил клиент Artemis с 1.3 до 2.6.2 и все еще получаю префикс jms.queue. на очередях. Мне нужно что-то еще?