Použití JMS na Springu pro přístup ke službě Azure Service Bus
Tento kurz ukazuje, jak pomocí úvodní sady Spring Boot pro Azure Service Bus JMS odesílat a přijímat zprávy ze služby Service Bus queues
a topics
.
Azure poskytuje platformu pro asynchronní zasílání zpráv s názvem Azure Service Bus („služba Service Bus“), která je založena na standardu Advanced Message Queueing Protocol 1.0 („protokol AMQP 1.0“). Service Bus můžete používat napříč celou řadou podporovaných platforem Azure.
Úvodní sada Spring Boot pro Azure Service Bus JMS poskytuje integraci Spring JMS se službou Service Bus.
Následující video popisuje, jak integrovat aplikace Spring JMS se službou Azure Service Bus pomocí JMS 2.0.
V tomto kurzu zahrneme dvě metody ověřování: ověřování Microsoft Entra a ověřování SAS (Shared Access Signatures). Karta Bez hesla zobrazuje ověřování Microsoft Entra a karta Připojovací řetězec zobrazuje ověřování SAS.
Ověřování Microsoft Entra je mechanismus pro připojení ke službě Azure Service Bus JMS pomocí identit definovaných v MICROSOFT Entra ID. Pomocí ověřování Microsoft Entra můžete spravovat identity uživatelů databáze a další služby Microsoft v centrálním umístění, což zjednodušuje správu oprávnění.
Ověřování SAS používá pro delegovaný přístup k JMS služby Service Bus připojovací řetězec vašeho oboru názvů služby Azure Service Bus. Pokud se rozhodnete používat sdílené přístupové podpisy jako přihlašovací údaje, musíte spravovat připojovací řetězec sami.
Požadavky
Předplatné Azure – vytvořte si ho zdarma.
Java Development Kit (JDK) verze 8 nebo vyšší.
Apache Maven verze 3.2 nebo vyšší
Fronta nebo téma služby Azure Service Bus Pokud ho nemáte, přečtěte si článek Použití webu Azure Portal k vytvoření oboru názvů služby Service Bus a fronty nebo vytvoření tématu a odběrů služby Service Bus pomocí webu Azure Portal.
Aplikace Spring Boot. Pokud ho nemáte, vytvořte projekt Maven pomocí aplikace Spring Initializr. Nezapomeňte vybrat projekt Maven a v části Závislosti přidejte závislost Spring Web a pak vyberte Java verze 8 nebo vyšší.
Důležité
K dokončení kroků v tomto kurzu se vyžaduje Spring Boot verze 2.5 nebo vyšší.
Odesílání a příjem zpráv ze služby Azure Service Bus
Pomocí fronty nebo tématu služby Azure Service Bus můžete odesílat a přijímat zprávy pomocí Spring Cloud Azure Service Bus JMS.
Pokud chcete nainstalovat modul Spring Cloud Azure Service Bus JMS Starter, přidejte do souboru pom.xml následující závislosti:
Kusovník materiálů (BOM) Spring Cloud v Azure:
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.19.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Poznámka:
Pokud používáte Spring Boot 2.x, nezapomeňte nastavit
spring-cloud-azure-dependencies
verzi na4.19.0
. Tato faktura materiálu (BOM) by měla být nakonfigurována v<dependencyManagement>
části vašeho pom.xml souboru. Tím se zajistí, že všechny závislosti Azure Spring Cloudu budou používat stejnou verzi. Další informace o verzi použité pro tuto kusovníku najdete v tématu Jakou verzi Spring Cloud Azure mám použít.Úvodní artefakt Spring Cloud Azure Service Bus JMS:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId> </dependency>
Vytvoření kódu aplikace
Pomocí následujících kroků nakonfigurujte aplikaci tak, aby k odesílání a příjmu zpráv používala frontu nebo téma služby Service Bus.
Nakonfigurujte přihlašovací údaje služby Service Bus přidáním následujících vlastností do souboru application.properties .
Poznámka:
Azure Service Bus JMS podporuje použití MICROSOFT Entra ID k autorizaci požadavků na prostředky služby Service Bus. S ID Microsoft Entra můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení, což může být uživatel nebo instanční objekt aplikace.
Důležité
Než začnete, ujistěte se, že jste přiřadili roli Vlastník dat služby Azure Service Bus k účtu Microsoft Entra, který právě používáte. Další informace viz Přiřazení rolí Azure pomocí webu Azure Portal.
spring.jms.servicebus.namespace=<ServiceBusNamespace> spring.jms.servicebus.pricing-tier=<ServiceBusPricingTier> spring.jms.servicebus.passwordless-enabled=true spring.jms.listener.receive-timeout=60000
Následující tabulka popisuje pole v konfiguraci:
Pole Popis spring.jms.servicebus.namespace
Zadejte obor názvů, který jste získali v instanci služby Service Bus z webu Azure Portal. spring.jms.servicebus.pricing-tier
Zadejte cenovou úroveň služby Service Bus. Podporované hodnoty jsou Premium a Standard. Úroveň Premium používá službu Java Message Service (JMS) 2.0, zatímco úroveň Standard používá JMS 1.1 k interakci se službou Azure Service Bus. spring.jms.servicebus.passwordless-enabled
Určete, jestli se má používat bez hesla. spring.jms.listener.receive-timeout
Ve výchozím nastavení je hodnota časového limitu příjmu 1000. Doporučujeme, abyste ho nastavili na 6 0000. Přidání
@EnableJms
pro povolení podpory pro koncové body naslouchacího procesu JMS s poznámkami SloužíJmsTemplate
k odesílání zpráv a@JmsListener
přijímání zpráv, jak je znázorněno v následujícím příkladu: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); } }
Položku
<QueueName>
nahraďte názvem vlastní fronty nakonfigurovaným pro váš obor názvů služby Service Bus.Tip
V tomto kurzu nejsou v konfiguracích ani kódu žádné ověřovací operace. Připojení ke službám Azure ale vyžaduje ověření. K dokončení ověřování je potřeba použít identitu Azure. Spring Cloud Azure používá
DefaultAzureCredential
, kterou poskytuje knihovna identit Azure, která vám pomůže získat přihlašovací údaje bez jakýchkoli změn kódu.DefaultAzureCredential
podporuje více metod ověřování a určuje, kterou metodu použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (například v místních a produkčních prostředích) bez implementace kódu specifického pro prostředí. Další informace naleznete v tématu DefaultAzureCredential.K dokončení ověřování v místních vývojových prostředích můžete použít Azure CLI, Visual Studio Code, PowerShell nebo jiné metody. Další informace najdete v tématu Ověřování Azure ve vývojových prostředích Java. K dokončení ověřování v hostitelských prostředích Azure doporučujeme použít spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure?
Spusťte aplikaci. Měli byste vidět
Sending message
aHello World
publikovat do protokolu aplikace, jak je znázorněno v následujícím příkladu výstupu:Sending message Message received: Hello World
Nasazení do Azure Spring Apps
Teď, když máte aplikaci Spring Boot spuštěnou místně, je čas ji přesunout do produkčního prostředí. Azure Spring Apps usnadňuje nasazování aplikací Spring Boot do Azure bez jakýchkoli změn kódu. Služba spravuje infrastrukturu aplikací Spring, aby se vývojáři mohli soustředit na svůj kód. Azure Spring Apps poskytuje správu životního cyklu pomocí komplexního monitorování a diagnostiky, správy konfigurace, zjišťování služeb, integrace CI/CD, modrých zelených nasazení a dalších. Pokud chcete nasadit aplikaci do Azure Spring Apps, přečtěte si téma Nasazení první aplikace do Azure Spring Apps.