Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать Служебная шина Azure с API JMS, интегрированным в платформу Spring JMS.
Основные функции
Подключение без пароля
Подключение без пароля использует проверку подлинности Microsoft Entra для подключения к службам Azure без хранения учетных данных в приложении, его файлах конфигурации или в переменных среды. Аутентификация Microsoft Entra — это механизм подключения к Служебная шина Azure с использованием удостоверений, определенных в Microsoft Entra ID. С помощью аутентификации Microsoft Entra вы можете управлять служебная шина и другими службами Microsoft в одном месте, что упрощает управление разрешениями.
Принцип работы
Spring Cloud Azure сначала создает один из следующих типов учетных данных в зависимости от конфигурации проверки подлинности приложения:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Если ни один из этих типов учетных данных не найден, для получения учетных данных из свойств приложения, переменных среды, управляемой идентификации или IDE используется цепочка учетных данных через DefaultTokenCredential. Дополнительные сведения см. в разделе Spring Cloud Azure authentication.
Настройка зависимостей
Добавьте следующие зависимости, если вы хотите перенести приложение Spring JMS для использования Служебная шина Azure.
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>
Конфигурация
В следующей таблице описываются настраиваемые свойства при использовании поддержки Spring JMS:
| Свойство | Описание |
|---|---|
spring.jms.servicebus.connection-string |
Строка подключения к Служебная шина Azure, если вы хотите указать строку подключения напрямую. |
spring.jms.servicebus.topic-client-id |
Идентификатор клиента JMS. Работает только для topicJmsListenerContainerFactory боба. |
spring.jms.servicebus.enabled |
Значение, указывающее, следует ли включить автоматическую настройку JMS служебная шина. Значение по умолчанию — true. |
spring.jms.servicebus.idle-timeout |
Длительность ожидания простоя подключения, указывающая, сколько времени клиент ожидает, что служебная шина поддерживать подключение, если сообщения не доставляются. Значение по умолчанию — 2m. |
spring.jms.servicebus.passwordless-enabled |
Следует ли включить аутентификацию без пароля для Служебная шина Azure JMS. Значение по умолчанию — false. |
spring.jms.servicebus.pricing-tier |
Ценовая категория Служебная шина Azure. Поддерживаемые значения: premium и standard. Уровень "Премиум" использует Java службу сообщений (JMS) 2.0, а уровень "Стандартный" использует JMS 1.1 для взаимодействия с Служебная шина Azure. |
spring.jms.servicebus.listener.reply-pub-sub-domain |
Значение, указывающее, является ли тип назначения ответа темой. Работает только для topicJmsListenerContainerFactory боба. |
spring.jms.servicebus.listener.phase |
Этап запуска и остановки этого контейнера. |
spring.jms.servicebus.listener.reply-qos-settings |
Настраивает QosSettings для использования при отправке ответа. |
spring.jms.servicebus.listener.subscription-durable |
Значение, указывающее, следует ли сделать подписку устойчивой. Работает только для topicJmsListenerContainerFactory боба. Значение по умолчанию — true. |
spring.jms.servicebus.listener.subscription-shared |
Значение, указывающее, следует ли предоставлять общий доступ к подписке. Работает только для topicJmsListenerContainerFactory боба. |
spring.jms.servicebus.pool.block-if-full |
Значение, указывающее, следует ли блокировать запрос соединения, если пул заполнен. Установите значение false, чтобы вместо этого вызвать JMSException. |
spring.jms.servicebus.pool.block-if-full-timeout |
Период блокировки перед генерацией исключения, если пул всё ещё заполнен. |
spring.jms.servicebus.pool.enabled |
Значение, указывающее, следует ли создавать JmsPoolConnectionFactory вместо обычного ConnectionFactory. |
spring.jms.servicebus.pool.idle-timeout |
Время ожидания простоя пула подключений. |
spring.jms.servicebus.pool.max-connections |
Максимальное количество подключений в пуле. |
spring.jms.servicebus.pool.max-sessions-per-connection |
Максимальное количество сеансов, объединённых в пул, для каждого подключения. |
spring.jms.servicebus.pool.time-between-expiration-check |
Интервал ожидания между запусками потока удаления неактивных соединений. Если значение отрицательное, поток удаления неактивных подключений не запускается. |
spring.jms.servicebus.pool.use-anonymous-producers |
Значение, указывающее, нужно ли использовать только один анонимный экземпляр MessageProducer. Установите для него значение false, чтобы создать один MessageProducer каждый раз, когда требуется. |
spring.jms.servicebus.prefetch-policy.all |
Значение по умолчанию для параметра предварительной выборки в этом пространстве имен служебная шина. Значение по умолчанию — 0. |
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch |
Количество предварительных выборок для устойчивой темы. Значение по умолчанию — 0. |
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch |
Количество предварительной выборки для браузера очередей. Значение по умолчанию — 0. |
spring.jms.servicebus.prefetch-policy.queue-prefetch |
Количество предварительной выборки для очереди. Значение по умолчанию — 0. |
spring.jms.servicebus.prefetch-policy.topic-prefetch |
Количество предварительных выборок для раздела. Значение по умолчанию — 0. |
Заметка
Общая конфигурация Spring JMS для краткости опущена.
Дополнительные сведения см. в Spring JMS Document.
Базовое использование
Подключение к Служебная шина Azure JMS без использования пароля
Настройте следующие свойства в файле application.yml:
spring:
jms:
servicebus:
namespace: ${AZURE_SERVICEBUS_NAMESPACE}
pricing-tier: ${PRICING_TIER}
passwordless-enabled: true
Важно
Служебная шина Azure JMS поддерживает использование Microsoft Entra ID для авторизации запросов к служебная шина ресурсам. При использовании Microsoft Entra ID убедитесь, что учетной записи Microsoft Entra, которую вы используете в данный момент, назначена роль Служебная шина Azure Data Owner. Дополнительные сведения см. в разделе Назначение ролей Azure с помощью портала Azure.
Подключение к Служебная шина Azure через JMS с использованием управляемого удостоверения
Чтобы использовать управляемую идентификацию, включите управляемую идентификацию для вашей службы и назначьте роль
Служебная шина Azure Data Owner. Дополнительные сведения см. в разделе Аутентификация управляемого удостоверения с помощью Microsoft Entra ID для доступа к ресурсам Служебная шина Azure.Настройте следующие свойства в файле application.yml:
spring: cloud: azure: credential: managed-identity-enabled: true jms: servicebus: namespace: ${AZURE_SERVICEBUS_NAMESPACE} pricing-tier: ${PRICING_TIER} passwordless-enabled: trueВажно
Если вы используете управляемое удостоверение, назначаемое пользователем, также необходимо добавить свойство
spring.cloud.azure.credential.client-idс идентификатором клиента управляемого удостоверения, назначаемого пользователем.
Подключение к Служебная шина Azure JMS с помощью строка подключения
Добавьте следующие свойства, и всё готово.
spring:
jms:
servicebus:
connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
pricing-tier: ${PRICING_TIER}
Заметка
Microsoft рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот способ только в тех случаях, когда более безопасные варианты, такие как управляемые удостоверения для подключений без пароля или ключей, неприемлемы. Для операций на локальном компьютере отдавайте предпочтение идентификаторам пользователей для беспарольных или бесключевых подключений.
Подключения
Spring Cloud Azure предоставляет следующие три варианта фабрики подключений для подключения к Служебная шина Azure JMS:
JmsPoolConnectionFactory: эта фабрика поддерживает пул подключений с настраиваемыми параметрами, такими какspring.jms.servicebus.pool.max-connections. Дополнительные параметры конфигурации пула с префиксомspring.jms.servicebus.pool.подробно описаны в разделе Конфигурация. Эта настройка повышает производительность с помощью возможности балансировки нагрузки Служебная шина Azure, распределяя трафик между несколькими конечными точками.CachingConnectionFactory: эта фабрика повторно использует одно подключение для всех вызововJmsTemplate, уменьшая затраты на создание подключения, что идеально подходит для сценариев с низким трафиком. Однако этот режим не использует возможности балансировки нагрузки Служебная шина Azure.ServiceBusJmsConnectionFactory: в этом режиме каждый вызовJmsTemplateсоздает новое подключение, которое может быть ресурсоемким и менее эффективным.
Если в classpath присутствуют все три класса, какой из них используется? В следующей таблице описывается использование на основе свойств конфигурации (начиная с Spring Cloud Azure 7.1.0 и 6.2.0):
spring.jms.servicebus.pool.enabled |
spring.jms.cache.enabled |
Отправитель ConnectionFactory |
Контейнер прослушивателя ConnectionFactory |
|---|---|---|---|
| не задано | не задано | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| не задано | true |
CachingConnectionFactory |
CachingConnectionFactory |
| не задано | false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
true |
не задано | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
true |
true |
CachingConnectionFactory |
CachingConnectionFactory |
true |
false |
JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
false |
не задано | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
false |
true |
CachingConnectionFactory |
CachingConnectionFactory |
false |
false |
ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
Заметка
В следующей таблице показано значение по умолчанию ConnectionFactory, если spring.jms.servicebus.pool.enabled и spring.jms.cache.enabled не заданы для разных версий Azure Spring Cloud:
| Версия Spring Cloud Azure | Отправитель ConnectionFactory |
Контейнер прослушивателя ConnectionFactory |
|---|---|---|
| >= 6.2.0 или >= 7.1.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 и 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Образцы
Дополнительные сведения см. в репозитории azure-spring-boot-samples на GitHub.