Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве показано, как использовать Spring Boot Starter для Azure Service Bus JMS для отправки сообщений в Service Bus queues и topics.
Azure предоставляет асинхронную платформу обмена сообщениями с именем Azure Service Bus ("Service Bus") на основе стандарта Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Вы можете использовать Service Bus в диапазоне поддерживаемых платформ Azure.
Начальная версия Spring Boot для Azure Service Bus JMS обеспечивает интеграцию Spring JMS с Service Bus.
В следующем видео описывается интеграция приложений Spring JMS с Azure Service Bus с помощью JMS 2.0.
В этом руководстве мы рассмотрим два метода проверки подлинности: проверку подлинности Microsoft Entra и проверку подлинности Shared Access Signatures (SAS), . На вкладке Passwordless показана проверка подлинности Microsoft Entra, а на вкладке Connection string — проверка подлинности SAS.
Аутентификация Microsoft Entra — это механизм подключения к Azure Service Bus JMS с использованием идентичностей из Microsoft Entra ID. С помощью проверки подлинности Microsoft Entra вы можете управлять удостоверениями пользователей базы данных и другими службами Майкрософт в центральном расположении, что упрощает управление разрешениями.
Проверка подлинности SAS использует строку подключения пространства имен Azure Service Bus для делегированного доступа к Service Bus JMS. Если вы решили использовать подписи общего доступа в качестве учетных данных, необходимо самостоятельно управлять строкой подключения.
Требования
Подписка Azure — создать бесплатно.
Java Development Kit (JDK) версии 8 или более поздней.
Apache Maven версии 3.2 или более поздней.
Очередь или тема для Azure Service Bus. Если у вас его нет, ознакомьтесь со статьей Использование портала Azure для создания пространства имен и очереди в Service Bus или Использование портала Azure для создания темы Service Bus и подписок на тему.
Приложение Spring Boot. Если у вас его нет, создайте проект Maven, используя Spring Initializr. Обязательно выберите Maven Project и в разделе Dependencies добавьте Spring Web и выберите Java версии 8 или более поздней.
Внимание
Для выполнения действий, описанных в этом руководстве, требуется Spring Boot версии 2.5 или более поздней.
Отправка и получение сообщений от Azure Service Bus
С помощью очереди или раздела для Azure Service Bus можно отправлять и получать сообщения с помощью Spring Cloud Azure Service Bus JMS.
Чтобы установить модуль JMS Starter Azure Service Bus Spring Cloud, добавьте следующие зависимости в файл pom.xml:
Список компонентов (BOM) Spring Cloud для Azure
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Примечание.
Если вы используете Spring Boot 4.0.x, обязательно установите версию, указанную в
spring-cloud-azure-dependencies, на значение7.1.0.Если вы используете Spring Boot 3.5.x, обязательно задайте версию
spring-cloud-azure-dependenciesна6.2.0.Если вы используете Spring Boot 3.1.x-3.5.x, обязательно установите для нее версию
spring-cloud-azure-dependenciesна5.25.0.Если вы используете Spring Boot 2.x, обязательно установите версию
spring-cloud-azure-dependenciesна4.20.0.Эта ведомость материалов (BOM) должна быть сконфигурирована в
<dependencyManagement>разделе файла pom.xml. Это гарантирует, что все зависимости Spring Cloud Azure используют одну и ту же версию.Дополнительные сведения о версии, используемой для этого BOM, можно найти в разделе Какую версию Spring Cloud Azure мне следует использовать?.
Артефакт Spring Cloud Azure Service Bus JMS Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Кодировать приложение
Чтобы настроить ваше приложение для использования очереди или топика Service Bus для отправки и получения сообщений, выполните следующие шаги.
Настройте учетные данные Service Bus, добавив следующие свойства в файл application.properties.
Примечание.
Azure Service Bus JMS поддерживает использование Microsoft Entra ID для авторизации запросов к Service Bus ресурсам. С помощью Microsoft Entra ID можно использовать Ролевое управление доступом Azure (Azure RBAC) для предоставления разрешений участнику безопасности, которым может быть пользователь или служба-программа приложения.
Внимание
Перед началом работы убедитесь, что вы назначили роль Azure Service Bus Data Owner учетной записи 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 Service Bus.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>собственным именем очереди, настроенным в пространстве имен Service Bus.Совет
В этом руководстве нет операций проверки подлинности в конфигурациях или коде. Однако для подключения к службам 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, развертывания по схеме blue-green и многого другого. Чтобы развернуть ваше приложение в Azure Spring Apps, см. статью Развертывание первого приложения в Azure Spring Apps.