Spring Boot: обмен сообщениями, JMS, поддержка Artemis

Поддержка Artemis

Spring Boot может автоматически настраивать ConnectionFactory, когда он обнаруживает, что Artemis доступен на пути к классам. Если посредник (broker) присутствует, встроенный посредник (embedded broker) автоматически запускается и настраивается (если свойство mode не было явно установлено). Поддерживаемыми режимами являются embedded (чтобы явно указать, что требуется встроенный посредник и что должна возникнуть ошибка, если посредник недоступен на пути к классам), и native (для подключения к посреднику с использованием транспортного протокола netty). Когда последний настроен, Spring Boot настраивает ConnectionFactory, который подключается к посреднику, работающему на локальном компьютере, с настройками по умолчанию.

Если вы используете spring-boot-starter-artemis, предоставляются необходимые зависимости для подключения к существующему экземпляру Artemis, а также инфраструктура Spring для интеграции с JMS. Добавление org.apache.activemq:artemis-jms-server в ваше приложение позволяет использовать встроенный режим (embedded mode).

Конфигурация Artemis контролируется внешними конфигурационными свойствами в spring.artemis.*. Например, вы можете объявить следующий раздел в application.properties:

spring.artemis.mode=native
spring.artemis.host=192.168.1.210
spring.artemis.port=9876
spring.artemis.user=admin
spring.artemis.password=secret

При встраивании посредника вы можете выбрать, хотите ли вы включить постоянство, и перечислить места назначения, которые должны быть доступны. Они могут быть указаны в виде списка через запятую, чтобы создать их с параметрами по умолчанию, или вы можете определить bean-компонент типа org.apache.activemq.artemis.jms.server.config.JMSQueueConfiguration или org.apache.activemq.artemis.jms.server.config.TopicConfiguration, для расширенных конфигураций очереди (queue) и topic, соответственно.

По умолчанию CachingConnectionFactory оборачивает собственный ConnectionFactory разумными настройками, которыми вы можете управлять с помощью внешних свойств конфигурации в spring.jms.*:

spring.jms.cache.session-cache-size=5

Если вы предпочитаете использовать собственный пул, вы можете сделать это, добавив зависимость к org.messaginghub:pooled-jms и настроив JmsPoolConnectionFactory соответствующим образом, как показано в следующем примере:

spring.artemis.pool.enabled=true
spring.artemis.pool.max-connections=50

Поиск JNDI не задействован, и адресаты сопоставляются с их именами, используя либо атрибут name в конфигурации Artemis, либо имена, предоставленные в конфигурации.

Использование JNDI ConnectionFactory

Если вы запускаете приложение на сервере приложений, Spring Boot пытается найти JMS ConnectionFactory с помощью JNDI. По умолчанию расположение java:/JmsXA и java:/XAConnectionFactory проверяется. Вы можете использовать свойство spring.jms.jndi-name, если вам нужно указать альтернативное расположение, как показано в следующем примере:

spring.jms.jndi-name=java:/MyConnectionFactory


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки