ActiveMQ для HornetQ вызывает исключение

Я пытаюсь отправить сообщение JMS с помощью ActiveMQ на сервер с помощью HornetQ, и у меня возникают некоторые трудности. Я бы подумал, что это вполне разумно, поэтому я подозреваю, что с моей стороны есть какая-то (вероятно, тривиальная) ошибка оператора. Есть ли что-то, что можно заметить здесь или что-то, на что я должен взглянуть? Ошибка возникает при попытке создать сеанс:

Со своей стороны я делаю следующее:

 final ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, serverUrl);
 connection = connectionFactory.createQueueConnection();
 session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);

На стороне сервера они видят следующее:

11:53:06,428 ERROR [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl] (Old I/O server worker (parentId: 1778858866, [id: 0x6a073b72, -hostname-])) 
Failed to decode: java.lang.IllegalArgumentException: Invalid type: 1
at org.hornetq.core.protocol.core.impl.PacketDecoder.decode(PacketDecoder.java:550) [hornetq-core-2.2.13.Final.jar:]
....

person geoffjentry    schedule 03.04.2013    source источник


Ответы (1)


Вы не можете использовать библиотеку ActiveMQ для общения с HornetQ. Каждый из них имеет свой собственный протокол, и вам потребуются соответствующие библиотеки для общения, и это работает в обоих направлениях. Вы не можете использовать библиотеки HornetQ для общения с ActiveMQ.

Вы можете использовать stomp для общения с HornetQ, который является общей библиотекой между HornetQ и ActiveMQ.

person Clebert Suconic    schedule 03.04.2013
comment
Интересный. Это была моя первоначальная мысль, но группы с обеих сторон посчитали, что это звучит странно, поскольку это должно быть стандартом проводного протокола. Я рассмотрю возможность использования stomp и/или добавления HornetQ на нашей стороне. - person geoffjentry; 03.04.2013
comment
Точно так же вы не можете использовать ActiveMQ для общения с WebSphere MQ и т. д. Возможно, вам следует принять мой ответ :) - person Clebert Suconic; 03.04.2013
comment
Другой вариант — использовать Apache Camel для создания маршрута, который перенаправляет сообщения от одного брокера к другому. - person Tim Bish; 03.04.2013
comment
Спасибо, парни. После некоторых других сбоев я, по крайней мере, смог общаться с их сервером, используя банки hornetq. Мы пытаемся свести к минимуму зависимости, поэтому можем рассмотреть один из других вариантов, но, по крайней мере, теперь мы знаем, в чем проблема. - person geoffjentry; 03.04.2013
comment
JMS != Протокол... JMS = клиентский API, а не совместимость с проводами... Единственными спецификациями, обеспечивающими совместимость проводов (то есть протокол), являются: AMQP, MQT, Stomp... и могут быть другие, но я сейчас не могу вспомнить. Если вы используете реализацию API, она будет действительна только для этой конкретной реализации. Надеюсь, это поможет! - person Clebert Suconic; 16.07.2013
comment
Теперь это изменилось правильно, вы можете использовать ActiveMQ Artemis для общения с HornetQ, так как HornetQ был пожертвован ActiveMQ, хотя я борюсь с тем, как заставить его работать O_o - person JGlass; 07.08.2018