#message-queue #hornetq
#очередь сообщений #hornetq
Вопрос:
У меня есть несколько вопросов относительно HornetQ:
-
В чем различия между HornetQ core API и JMS API?
-
есть ли какие-либо преимущества или недостатки при использовании одного из них?
-
Верно ли утверждение, что если я использую core API, а затем решу сменить свою шину обмена сообщениями (скажем, на ActiveMQ), то мне придется изменить все свои коды?
Ответ №1:
-
HornetQ Core API — это собственный API от HornetQ, в то время как JMS API — это стандартный API, определенный процессом сообщества Java.
-
Есть несколько функций, которые не поддерживаются в JMS API, но доступны через core-api:
-
Невозможно иметь несколько пользователей для подписки на одну тему (скажем, если вы хотите иметь несколько пользователей для лучшего масштабирования)
-
Это более общий способ создания подписки. Вы просто создаете очередь внутри адреса. Очень просто.
-
У нас есть хороший API для асинхронных подтверждений. Нет необходимости блокировать когда-либо, если вы используете эту функцию.
-
Преимуществом JMS является переносимость. Ваш код остается неизменным, если вы решите переключаться между поставщиками.
Недостатком JMS является то, что в нем отсутствуют некоторые функции, и он немного подробный, то, что находится в стадии разработки, прямо сейчас работает на JMS 2 JSR.
- Да, потому что, как я уже говорил здесь, Hornetq-core api является проприетарным API, следовательно, он будет работать только на HornetQ. Так же, как некоторые системы обмена сообщениями будут иметь собственный API.
Если вы инкапсулируете свой доступ к сообщениям, вы можете значительно минимизировать это, хотя вы могли бы просто заменить один класс в вашей системе, используя стандартные методы OO.
Комментарии:
1. Пожалуйста, не забудьте принять ответ, если у вас не осталось больше вопросов 🙂
2. спасибо за ответ, после прочтения у меня возник другой вопрос, можем ли мы иметь потребителей или отправителей сообщений в очереди, где некоторые используют Core API, а некоторые — JMS?
3. Да .. это не должно быть проблемой. Кстати: Вы должны принять ответ как правильный.. не голосовать.
4. Я знаю, я проголосовал за это и ждал, когда вы ответите на мой последний вопрос!! в любом случае спасибо
5. Проблема просто в смешивании core и JMS. Допустим, если вы используете TextMessage для создания, то вам нужно реализовать правильное чтение в core, поскольку TextMessage добавит байты в CoreMessage. это не будет проблемой, если вы всегда используете BytesMessage