Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как использовать Spring Boot Starter для Azure Service Bus JMS для отправки сообщений и получения сообщений из службы queues
и topics
.
Azure предоставляет асинхронную платформу обмена сообщениями, называемую служебной шиной Azure (служебной шиной), которая основана на стандарте Расширенного протокола очереди сообщений 1.0 (AMQP 1.0). Вы можете использовать Service Bus на всех поддерживаемых платформах Azure.
Модуль Spring Boot Starter для сервисной шины Azure JMS обеспечивает интеграцию Spring JMS с сервисной шиной.
В этом видео показано, как интегрировать приложения Spring JMS с Azure Service Bus, используя JMS 2.0.
В этом руководстве мы включаем два метода аутентификации: аутентификацию Microsoft Entra и аутентификацию с использованием Подписанных URL-адресов (SAS). На вкладке "Без пароля " показана проверка подлинности Microsoft Entra, а на вкладке "Строка подключения " отображается проверка подлинности SAS.
Проверка подлинности Microsoft Entra является механизмом подключения к службе шины сообщений Azure (JMS) с использованием удостоверений, определённых в Microsoft Entra ID. С помощью проверки подлинности Microsoft Entra вы можете управлять удостоверениями пользователей базы данных и другими службами Microsoft в центральном расположении, что упрощает управление разрешениями.
Проверка подлинности SAS используется строкой подключения пространства имен службы шины Azure для делегированного доступа к службе шины JMS. Если вы решили использовать подписи общего доступа в качестве учетных данных, вам нужно самостоятельно управлять строкой подключения.
Требования
Подписка Azure — создайте ее бесплатно.
Пакет средств разработки Java (JDK) версии 8 или более поздней.
Apache Maven версии 3.2 или более поздней.
Очередь или тема для Служебной шины Azure. Если у вас его нет, см. статью «Использование портала Azure для создания пространства имен и очереди в служебной шине» или «Использование портала Azure для создания раздела служебной шины и подписок на раздел».
Приложение Spring Boot. Если у вас его нет, создайте проект Maven с использованием Spring Initializr. Обязательно выберите проект Maven и в разделе "Зависимости" добавьте зависимость Spring Web , а затем выберите Java версии 8 или более поздней.
Внимание
Для выполнения действий, описанных в этом руководстве, требуется Spring Boot версии 2.5 или более поздней.
Отправка и получение сообщений в служебной шине Azure
С помощью очереди или темы для Azure Service Bus можно отправлять и получать сообщения, используя Spring Cloud Azure Service Bus JMS.
Чтобы установить стартер-модуль JMS для сервисной шины Azure Spring Cloud, добавьте следующие зависимости в файл pom.xml :
Сводная спецификация Spring Cloud Azure (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.22.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Примечание.
Если вы используете Spring Boot 2.x, обязательно установите версию
spring-cloud-azure-dependencies
на4.20.0
. Этот счет материалов (BOM) должен быть настроен в<dependencyManagement>
разделе файла pom.xml . Это гарантирует, что все зависимости Spring Cloud Azure используют одну и ту же версию. Дополнительные сведения о версии, используемой для этого BOM, см. в статье "Какая версия Spring Cloud Azure должна использоваться".Артефакт стартер-модуля JMS Spring Cloud Сервисная шина Azure:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Кодировать приложение
Чтобы настроить ваше приложение для использования очереди или темы в службе Service Bus для отправки и получения сообщений, выполните следующие действия.
Настройте учетные данные служебной шины, добавив следующие свойства в файл application.properties .
Примечание.
Служебная шина Azure Service Bus поддерживает использование Microsoft Entra ID для авторизации запросов к ресурсам службы шины. С помощью идентификатора Microsoft Entra можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления разрешений субъекту безопасности, который может быть пользователем или субъектом-службой приложений.
Внимание
Перед началом работы убедитесь, что вы назначили роль владельца данных служебной шины Azure учетной записи Microsoft Entra, которую вы используете. Дополнительные сведения см. в статье "Назначение ролей Azure" с помощью портала Azure.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000
В следующей таблице описаны поля в конфигурации:
Поле Описание spring.jms.servicebus.namespace
Укажите пространство имен, полученное в экземпляре службы Service Bus из портала Azure. spring.jms.servicebus.pricing-tier
Выберите ценовую категорию для служебной шины. Поддерживаемые значения: premium
иstandard
. Уровень Премиум использует службу сообщений Java (JMS) 2.0, а уровень Стандартный использует JMS 1.1 для взаимодействия с Службой шины Azure.spring.jms.servicebus.passwordless-enabled
Укажите, следует ли использовать метод аутентификации без пароля. spring.jms.listener.receive-timeout
По умолчанию значение времени ожидания получения равно 1000. Рекомендуется задать для него значение 60000 Добавьте
@EnableJms
, чтобы включить поддержку аннотированных конечных точек слушателя JMS. ИспользуетсяJmsTemplate
для отправки сообщений и@JmsListener
получения сообщений, как показано в следующем примере:import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.jms.annotation.EnableJms; import org.springframework.boot.CommandLineRunner; import org.springframework.jms.annotation.JmsListener; import org.springframework.jms.core.JmsTemplate; @SpringBootApplication @EnableJms public class ServiceBusJMSQueueApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(ServiceBusJMSQueueApplication.class); private static final String QUEUE_NAME = "<QueueName>"; @Autowired private JmsTemplate jmsTemplate; public static void main(String[] args) { SpringApplication.run(ServiceBusJMSQueueApplication.class, args); } @Override public void run(String... args) { LOGGER.info("Sending message"); jmsTemplate.convertAndSend(QUEUE_NAME, "Hello World"); } @JmsListener(destination = QUEUE_NAME, containerFactory = "jmsListenerContainerFactory") public void receiveMessage(String message) { LOGGER.info("Message received: {}", message); } }
Замените
<QueueName>
именем своей очереди, настроенным в пространстве имен служебной шины.Совет
В этом руководстве нет операций проверки подлинности в конфигурациях или коде. Однако для подключения к службам Azure требуется проверка подлинности. Чтобы завершить проверку подлинности, необходимо использовать удостоверение Azure. Spring Cloud Azure использует
DefaultAzureCredential
, которую предоставляет библиотека удостоверений Azure, чтобы получить учетные данные без необходимости вносить изменения в код.DefaultAzureCredential
поддерживает несколько методов проверки подлинности и определяет, какой метод следует использовать во время выполнения. Этот подход позволяет приложению использовать различные методы проверки подлинности в разных средах (например, локальных и рабочих средах), не реализуя код, зависящий от среды. Дополнительные сведения см. в разделе DefaultAzureCredential.Для выполнения проверки подлинности в локальных средах разработки можно использовать Azure CLI, Visual Studio Code, PowerShell или другие методы. Дополнительные сведения см. в статье о проверке подлинности Azure в средах разработки Java. Чтобы завершить проверку подлинности в средах размещения Azure, рекомендуется использовать управляемое удостоверение, назначаемое пользователем. Дополнительные сведения см. в статье "Что такое управляемые удостоверения для ресурсов Azure"?
Запустите приложение. Вы должны увидеть
Sending message
иHello World
, опубликованные в журнале приложения, как показано в следующем примере результатов.Sending message Message received: Hello World
Развертывание в Azure Spring Apps
Теперь, когда у вас есть приложение Spring Boot, работающее локально, пришло время переместить его в рабочую среду. Azure Spring Apps упрощает развертывание приложений Spring Boot в Azure без каких-либо изменений кода. Эта служба управляет инфраструктурой приложений Spring, благодаря чему разработчики могут сосредоточиться на коде. Azure Spring Apps обеспечивает управление жизненным циклом за счет комплексного мониторинга и диагностики, управления конфигурацией, обнаружения служб, интеграции CI/CD, выполнения сине-зеленых развертываний и прочего. Сведения о развертывании приложения в Azure Spring Apps см. в статье "Развертывание первого приложения в Azure Spring Apps".