Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать Служебная шина Azure с API JMS, интегрированным в платформу Spring JMS.
Основные функции
Подключение без пароля
Подключение без пароля использует проверку подлинности Microsoft Entra для подключения к службам Azure без хранения учетных данных в приложении, его файлах конфигурации или в переменных среды. Microsoft Entra аутентификации — это механизм подключения к Служебная шина Azure с помощью удостоверений, определенных в Microsoft Entra ID. С помощью проверки подлинности Microsoft Entra вы можете управлять служебная шина и другими службы Майкрософт в центральном расположении, что упрощает управление разрешениями.
Принцип работы
Spring Cloud Azure сначала создает один из следующих типов учетных данных в зависимости от конфигурации проверки подлинности приложения:
ClientSecretCredentialClientCertificateCredentialUsernamePasswordCredentialManagedIdentityCredential
Если ни один из этих типов учетных данных не найден, цепочка учетных данных через 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 опущена коротко.
Дополнительные сведения см. в
Базовое использование
Подключение к Служебная шина 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 убедитесь, что вы назначили роль Служебная шина Azure владельца данных учетной записи Microsoft Entra, которую вы используете. Дополнительные сведения см. в разделе Assign Azure роли с помощью портала Azure.
Подключение к Служебная шина Azure с помощью JMS с помощью управляемого удостоверения
Чтобы использовать управляемое удостоверение, включите управляемое удостоверение для службы и назначьте роль
Служебная шина Azure Data Owner. Дополнительные сведения см. в разделе Authenticate управляемое удостоверение с 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}
Заметка
Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует очень высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные параметры, такие как управляемые удостоверения для бессерверных или бессерверных подключений, не являются жизнеспособными. Для локальных операций компьютера предпочитайте удостоверения пользователей для бессерверных или бессерверных подключений.
Блат
Spring Cloud Azure предоставляет следующие три варианта подключения фабрики подключений для подключения к Служебная шина Azure JMS:
JmsPoolConnectionFactory: эта фабрика поддерживает пул подключений с настраиваемыми параметрами, такими какspring.jms.servicebus.pool.max-connections. Дополнительные параметры конфигурации пула , префиксированные сspring.jms.servicebus.pool.помощью, подробно описаны в разделе "Конфигурация ". Эта настройка повышает производительность с помощью возможности балансировки нагрузки Служебная шина Azure, распределяя трафик между несколькими конечными точками.CachingConnectionFactory: эта фабрика повторно использует одно подключение для всех вызововJmsTemplate, уменьшая затраты на создание подключения, что идеально подходит для сценариев с низким трафиком. Однако этот режим не использует возможности балансировки нагрузки Служебная шина Azure.ServiceBusJmsConnectionFactory: в этом режиме каждый вызовJmsTemplateсоздает новое подключение, которое может быть ресурсоемким и менее эффективным.
Когда все три класса существуют в пути к классам, какой из них используется? В следующей таблице описано, что используется на основе свойств конфигурации (начиная с Spring Cloud Azure 7.2.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.2.0 | CachingConnectionFactory |
ServiceBusJmsConnectionFactory |
| 6.1.0 и 7.0.0 | ServiceBusJmsConnectionFactory |
ServiceBusJmsConnectionFactory |
| <= 6.1.0 | JmsPoolConnectionFactory |
JmsPoolConnectionFactory |
Образцы
Дополнительные сведения см. в репозитории azure-spring-boot-samples на GitHub.