HornetQ Core API и JMS

#message-queue #hornetq

#очередь сообщений #hornetq

Вопрос:

У меня есть несколько вопросов относительно HornetQ:

  1. В чем различия между HornetQ core API и JMS API?

  2. есть ли какие-либо преимущества или недостатки при использовании одного из них?

  3. Верно ли утверждение, что если я использую core API, а затем решу сменить свою шину обмена сообщениями (скажем, на ActiveMQ), то мне придется изменить все свои коды?

Ответ №1:

  1. HornetQ Core API — это собственный API от HornetQ, в то время как JMS API — это стандартный API, определенный процессом сообщества Java.

  2. Есть несколько функций, которые не поддерживаются в JMS API, но доступны через core-api:

    • Невозможно иметь несколько пользователей для подписки на одну тему (скажем, если вы хотите иметь несколько пользователей для лучшего масштабирования)

    • Это более общий способ создания подписки. Вы просто создаете очередь внутри адреса. Очень просто.

    • У нас есть хороший API для асинхронных подтверждений. Нет необходимости блокировать когда-либо, если вы используете эту функцию.

Преимуществом JMS является переносимость. Ваш код остается неизменным, если вы решите переключаться между поставщиками.

Недостатком JMS является то, что в нем отсутствуют некоторые функции, и он немного подробный, то, что находится в стадии разработки, прямо сейчас работает на JMS 2 JSR.

  1. Да, потому что, как я уже говорил здесь, Hornetq-core api является проприетарным API, следовательно, он будет работать только на HornetQ. Так же, как некоторые системы обмена сообщениями будут иметь собственный API.

Если вы инкапсулируете свой доступ к сообщениям, вы можете значительно минимизировать это, хотя вы могли бы просто заменить один класс в вашей системе, используя стандартные методы OO.

Комментарии:

1. Пожалуйста, не забудьте принять ответ, если у вас не осталось больше вопросов 🙂

2. спасибо за ответ, после прочтения у меня возник другой вопрос, можем ли мы иметь потребителей или отправителей сообщений в очереди, где некоторые используют Core API, а некоторые — JMS?

3. Да .. это не должно быть проблемой. Кстати: Вы должны принять ответ как правильный.. не голосовать.

4. Я знаю, я проголосовал за это и ждал, когда вы ответите на мой последний вопрос!! в любом случае спасибо

5. Проблема просто в смешивании core и JMS. Допустим, если вы используете TextMessage для создания, то вам нужно реализовать правильное чтение в core, поскольку TextMessage добавит байты в CoreMessage. это не будет проблемой, если вы всегда используете BytesMessage