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 řetězce Připojení znázorňuje 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

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.11.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 na 4.17.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.

  1. 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.
  2. 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?

  3. Spusťte aplikaci. Měli byste vidět Sending message a Hello 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.

Další kroky