Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tutorial se muestra cómo usar Spring Boot Starter para Azure Service Bus JMS para enviar y recibir mensajes de Service Bus queues y topics.
Azure proporciona una plataforma de mensajería asincrónica denominada Azure Service Bus ("Service Bus") basada en el estándar Advanced Message Queueing Protocol 1.0 ("AMQP 1.0"). Puede usar Service Bus en toda la gama de plataformas de Azure compatibles.
Spring Boot Starter para Azure Service Bus JMS proporciona la integración de Spring JMS con Service Bus.
En el vídeo siguiente se describe cómo integrar aplicaciones de Spring JMS con Azure Service Bus mediante JMS 2.0.
En este tutorial, se incluyen dos métodos de autenticación: autenticación Microsoft Entra y Autenticación de firmas de acceso compartido (SAS. La pestaña Passwordless muestra la autenticación Microsoft Entra y la pestaña Connection string muestra la autenticación SAS.
Microsoft Entra autenticación es un mecanismo para conectarse a Azure Service Bus JMS mediante identidades definidas en Microsoft Entra ID. Con la autenticación de Microsoft Entra, puede administrar las identidades de usuario de base de datos y otros servicios de Microsoft en un lugar centralizado, lo que facilita la gestión de permisos.
La autenticación SAS utiliza la cadena de conexión del espacio de nombres de Azure Service Bus para el acceso delegado a Service Bus JMS. Si decide usar firmas de acceso compartido como credenciales, debe administrar el cadena de conexión por su cuenta.
Requisitos previos
Una suscripción Azure: crear una gratuita.
Java Kit de desarrollo (JDK) versión 8 o posterior.
Apache Maven, versión 3.2 o posterior.
Una cola o tema para Azure Service Bus. Si no tiene uno, consulte el portal de Azure para crear un espacio de nombres de Service Bus y una cola o el portal de Azure para crear un tópico de Service Bus y suscripciones al tópico.
Una aplicación de Spring Boot. Si no tiene uno, cree un proyecto de Maven con Spring Initializr. Asegúrese de seleccionar Maven Project y, en Dependencies, agregue la dependencia Spring Web, luego seleccione Java versión 8 o posterior.
Importante
Se necesita Spring Boot versión 2.5 o superior para completar los pasos descritos en este tutorial.
Enviar y recibir mensajes de Azure Service Bus
Con una cola o tema para Azure Service Bus, puede enviar y recibir mensajes mediante Spring Cloud Azure Service Bus JMS.
Para instalar el módulo Spring Cloud Azure Service Bus JMS Starter, agregue las siguientes dependencias al archivo pom.xml:
La lista de materiales (BOM) de Spring Cloud Azure:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.2.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Nota:
Si usa Spring Boot 4.0.x, asegúrese de establecer la versión en
spring-cloud-azure-dependencies7.2.0.Si usa Spring Boot 3.5.x, asegúrese de establecer la versión
spring-cloud-azure-dependenciesa6.2.0.Si usa Spring Boot 3.1.x-3.5.x, asegúrese de establecer la versión de
spring-cloud-azure-dependenciesa5.25.0.Si usa Spring Boot 2.x, asegúrese de establecer la versión de
spring-cloud-azure-dependenciesen4.20.0.Esta lista de materiales (BOM) debe configurarse en la sección
<dependencyManagement>del archivo pom.xml. Esto garantiza que todas las dependencias de Spring Cloud Azure usen la misma versión.Para obtener más información sobre la versión usada para este BOM (Bill of Materials), consulte Qué versión de Spring Cloud Azure debo usar.
El artefacto de Spring Cloud Azure Service Bus JMS Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Programar la aplicación
Siga estos pasos para configurar la aplicación para usar una cola o un tema de Service Bus para enviar y recibir mensajes.
Configure las credenciales de Service Bus agregando las siguientes propiedades al archivo application.properties.
Nota:
Azure Service Bus JMS admite el uso de Microsoft Entra ID para autorizar solicitudes a recursos de Service Bus. Con Microsoft Entra ID, puede usar Azure control de acceso basado en rol (Azure RBAC) para conceder permisos a una entidad de seguridad, que puede ser un usuario o un principal de servicio de aplicación.
Importante
Antes de empezar, asegúrese de haber asignado el rol Propietario de datos de Azure Service Bus a la cuenta de Microsoft Entra que está usando actualmente. Para obtener más información, consulte Assign Azure roles mediante el portal de Azure.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000En la siguiente tabla se describen los campos de la configuración:
Campo Descripción spring.jms.servicebus.namespaceEspecifique el espacio de nombres que obtuvo en la instancia de servicio de Service Bus desde el portal de Azure. spring.jms.servicebus.pricing-tierEspecifique el plan de tarifa del bus de servicio. Los valores admitidos son premiumystandard. El nivel Premium usa Java Message Service (JMS) 2.0, mientras que el nivel estándar usa JMS 1.1 para interactuar con Azure Service Bus.spring.jms.servicebus.passwordless-enabledEspecifique si se va a usar a opción sin contraseña. spring.jms.listener.receive-timeoutDe manera predeterminada, el valor del tiempo de espera de recepción es de 1000. Se recomienda que lo establezca en 60 000. Agregue
@EnableJmspara habilitar la compatibilidad con los puntos de conexión anotados del cliente de escucha de JMS. UseJmsTemplatepara enviar mensajes y@JmsListenerpara recibir mensajes, como se muestra en el ejemplo siguiente: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); } }Reemplaza
<QueueName>por el nombre de cola propio que has configurado en el espacio de nombres de Service Bus.Sugerencia
En este tutorial, no hay ninguna operación de autenticación en las configuraciones ni en el código. Sin embargo, la conexión a Azure servicios requiere autenticación. Para completar la autenticación, debe usar Azure Identity. Spring Cloud Azure usa
DefaultAzureCredential, que la biblioteca Azure Identity proporciona para ayudarle a obtener credenciales sin cambios en el código.DefaultAzureCredentialadmite varios métodos de autenticación y determina qué método se usa en tiempo de ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos, como entornos locales o de producción, sin implementar código específico del entorno. Para obtener más información, vea DefaultAzureCredential.Para completar la autenticación en entornos de desarrollo local, puede usar CLI de Azure, Visual Studio Code, PowerShell u otros métodos. Para obtener más información, consulte autenticación Azure en entornos de desarrollo de Java. Para completar la autenticación en Azure entornos de hospedaje, se recomienda usar la identidad administrada asignada por el usuario. Para obtener más información, consulte ¿Qué son las identidades administradas para los recursos de Azure?
Inicie la aplicación. Debería ver
Sending messageyHola mundopublicados en el registro de aplicaciones, como se muestra en la salida del ejemplo siguiente:Sending message Message received: Hello World
Implementación en Azure Spring Apps
Ahora que tiene la aplicación Spring Boot que se ejecuta localmente, es el momento de moverla a producción. Azure Spring Apps facilita la implementación de aplicaciones de Spring Boot en Azure sin cambios en el código. El servicio administra la infraestructura de las aplicaciones de Spring, con el fin de que los desarrolladores puedan centrarse en el código. Azure Spring Apps proporciona administración del ciclo de vida mediante supervisión y diagnósticos completos, administración de configuración, detección de servicios, integración de CI/CD, implementaciones azul-verde, etc. Para implementar la aplicación en Azure Spring Apps, consulte Implementación de la primera aplicación en Azure Spring Apps.