Проблемы с использованием activemq-client jar против activemq-all jar - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно использовать activemq-client вместо свертки JAR-файлов activemq-all, потому что свертка содержит разные версии других библиотек, которые мы используем.

Я использую maven для управления зависимостями, клиентский файл извлекает:

  • activemq-клиент (5.15.8)
  • slf4j-api 1.7.25
  • geronimo-jms_1.1_spec (1.1.1)
  • hawtbuf (1.11)
  • geronimo-j2ee-management_1.1_spec (1.0.1)

Все банки просто активны mq-all (5.15.8)

Используя этот код, с jar activemq-all я могу подключиться и начать получать сообщения. При звонке createConnection() я получаю сообщение в журнале "Успешно подключено к ..."

Используя jar activemq-client, он зависает при вызове createSession() (и выдает сообщение «ошибка после 10 попыток, попытка будет продолжаться»). Я не получаю сообщение "Успешно подключен к ...".

ConnectionFactory factory = new ActiveMQConnectionFactory(user, pass, url);
Connection AMQconn =  factory.createConnection();
Session AMQsess =  AMQconn.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = AMQsess.createQueue(queueName);
MessageConsumer AMQconsumer = AMQsess.createConsumer(queue);

Я предполагаю, что где-то отсутствует зависимость, но я не получаю no class def found исключений и т. Д.

(я также использовал activemq версии 5.15.9, но наш сервер 5.15.8, так что придерживайтесь этого).

Более общая картина (почему jar-клиент против jar-пакета): мне нужно подключиться к hornetQ и AMQ в одном и том же процессе, и разбивание отдельных jar-файлов - это моя попытка исправить конфликтующие версии вещей в свернутые банки)

1 Ответ

1 голос
/ 17 июня 2019

В вопросе пропущен URI, но комментарии, похоже, указывают на то, что пользователь пытается подключиться через URI в форме: auto://localhost:61616. Это было бы проблемой, учитывая, что автоматический транспорт не имеет смысла на стороне клиента, поскольку он предназначен для математического определения на стороне брокера auto , какой протокол использует подключающийся клиент, и переключения на этот протокол auto матически. Автотранспорт позволяет брокеру поддерживать несколько протоколов на одном открытом порту, к которому будут подключаться клиенты.

Клиент ActiveMQ JMS всегда должен использовать протокол Openwire (именно для этого он был создан), и поэтому URI для клиента будет иметь вид tcp://, ssl:// или failover:// и т. Д.

Существуют некоторые специальные удобные классы, которые включаются, если вы включаете JAR-брокер ActiveMQ, который будет просто отображать URI, включающие схемы, которые не имеют смысла в клиенте, такие как nio , nio + ssl или auto , но они не включены в jar-файл клиента, поскольку на самом деле их там нет, поскольку они просто не предназначены для использования на стороне клиента.

...