Универсальный JMS клиент

213
11 апреля 2018, 10:14

Я пишу приложение spring-boot, которое должно получать и отправлять JMS-сообщения. Адрес, порт, логин и пароль для подключения к брокеру читаются из конфигов. Изначально я не знаю, с каким типом брокера придется работать. Существует ли универсальный JMS клиент для работы с любыми брокерами? Перелопатил гугл и, как я понял, для каждого брокера (ActiveMQ, RabbitMQ, IBM MQ) существует своя реализация клиента. Или я что-то неправильно понимаю?

Answer 1

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

Answer 2

Универсального JMS-клиента не существует, но есть возможность не переписывать код под каждого провайдера. При правильной реализации должно работать следующим образом.

JMS - это API, в его составе в основном интерфейсы, не имеющие реализации. Таким образом, код, использующий JMS API работает с абстракциями, изначально не имеющими реализации (и соответственно - неработоспособными).

Реализация находится в JMS-библиотеках, поставляемых с конкретным брокером - у каждого продукта своя реализация. Чтобы заставить всё работать, требуется:

  1. Добавить библиотеки брокера в Ваше приложение
  2. Сконфигурировать приложение так, чтобы оно обращалось к очередям на сервере брокера.

Вы можете писать основную бизнес-логику, работающую с интерфейсами, и эта часть не должна меняться. Скорее всего, именно конфигурация окажется самой сложной задачей, причём может оказаться так, что для каждого брокера её придётся решать по разному. Основная цель - создать объекты, реализующие интерфейсы JMS (такие, как фабрика подключений, сессии, очереди и прочее). Как это сделать - отдельная большая тема, скорее всего, придётся читать документацию касательно интеграции через JMS по каждому брокеру.

Альтернативный вариант - поискать готовые решения, более высокого уровня (по сравнению с брокерами), например, интеграционные платформы, в которых уже есть поддержка разных брокеров.

READ ALSO
Вывод результата в java netbeans

Вывод результата в java netbeans

Возможно очень глупый вопрос, но где мой вывод текста? Уже долго мучаюсь с этой мелочью)

228
Поиск библиотек для Android Studio (Java)

Поиск библиотек для Android Studio (Java)

Как новичок прошу помощи в таком срамном вопросе как поиск библиотек в интернете(не установка, а именно поиск)

318
Java Spring Boot: The selection cannot be run any server

Java Spring Boot: The selection cannot be run any server

Добрый день! Скачал проект с github: https://githubcom/spring-guides/tut-react-and-spring-data-rest/tree/master/basic

267
Как с одного модуля закрыть другой?

Как с одного модуля закрыть другой?

Добрый вечер, есть несколько вопросов

234