Podpora Spring Cloud Azure pro frontu Služby Azure Storage služby Spring Messaging

Tento článek popisuje, jak můžete používat frontu Spring Cloud Azure a Spring Messaging Azure Storage. Spring Framework poskytuje rozsáhlou podporu integrace se systémy zasílání zpráv.

Fronta úložiště Azure služby Spring Messaging

Klíčové koncepty

Azure Queue Storage je služba pro ukládání velkého počtu zpráv. Ke zprávům se dostanete odkudkoli na světě prostřednictvím ověřených volání pomocí protokolu HTTP nebo HTTPS. Zpráva fronty může mít velikost až 64 KB. Fronta může obsahovat miliony zpráv až do celkového limitu kapacity účtu úložiště. Fronty se běžně používají k vytvoření seznamu úkolů pro zpracování asynchronně. Projekt Spring Messaging pro Azure Queue Storage používá základní koncepty Springu na vývoj řešení zasílání zpráv založených na sběrnici service bus. Poskytuje šablonu jako abstrakci vysoké úrovně pro odesílání a přijímání zpráv. Tyto knihovny podporují použití injektáže závislostí a deklarativní konfigurace.

Nastavení závislostí

<dependency>
  <groupId>com.azure.spring</groupId>
  <artifactId>spring-cloud-azure-starter</artifactId>
</dependency>
<dependency>
  <groupId>com.azure.spring</groupId>
  <artifactId>spring-messaging-azure-storage-queue</artifactId>
</dependency>

Konfigurace

Knihovna poskytuje následující možnosti konfigurace pro StorageQueueTemplate:

Vlastnictví Typ Popis
spring.cloud.azure.message-converter.isolated-object-mapper Boolean Určuje, zda se pro převaděč zpráv fronty služby Storage používá izolovaný objekt ObjectMapper bean. Ve výchozím nastavení je povoleno.
spring.cloud.azure.storage.queue.enabled Boolean Určuje, jestli je povolená fronta služby Azure Storage.
spring.cloud.azure.storage.queue.connection-string Řetězec Hodnota připojovacího řetězce fronty služby Storage
spring.cloud.azure.storage.queue.accountName Řetězec Název účtu fronty úložiště
spring.cloud.azure.storage.queue.accountKey Řetězec Klíč účtu fronty úložiště.

Základní použití

Převaděč zpráv vlastní fronty úložiště

Existují dva způsoby konfigurace převaděče zpráv fronty úložiště:

  • Nakonfigurujte následující vlastnost tak, aby výchozí převaděč zpráv fronty úložiště používal ObjectMapper bean, což může být vaše vlastní ObjectMapper bean nebo jedna spravovaná aplikací Spring Boot:

    spring:
      cloud:
        azure:
          message-converter:
            isolated-object-mapper: false
    
  • Definujte převaděč zpráv fronty úložiště přímo:

    @Bean
    AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() {
        JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build();
        return new ServiceBusMessageConverter(jsonMapper);
    }
    

Odesílání a příjem zpráv do fronty služby Azure Storage

K odesílání a přijímání zpráv použijte následující postup:

  1. Pomocí jednoho z následujících přístupů vyplňte možnosti konfigurace přihlašovacích údajů:

    • Pro přihlašovací údaje jako DefaultAzureCredentialnakonfigurujte v souboru application.yml následující vlastnosti:

      spring:
        cloud:
          azure:
            storage:
              queue:
                account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
      
    • Pro přihlašovací údaje jako připojovací řetězec nakonfigurujte v souboru application.yml následující vlastnosti:

      spring:
        cloud:
          azure:
            storage:
              queue:
                connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}
      
    • U přihlašovacích údajů jako spravovaných identit nakonfigurujte v souboru application.yml následující vlastnosti:

      spring:
        cloud:
          azure:
            credential:
              managed-identity-enabled: true
              client-id: ${AZURE_CLIENT_ID}
            profile:
              tenant-id: <tenant>
            storage:
              queue:
                account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
      

Poznámka:

Pro tenant-idjsou povoleny následující hodnoty: common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) v části Chyba AADSTS50020 – Uživatelský účet poskytovatele identity neexistuje v tenantovi. Informace o převodu aplikace s jedním nájemcem na vícenájemcovou najdete v kapitole Převod jednoklientských aplikací na vícenájemcovou vMicrosoft Entra ID.

  • Pro přihlašovací údaje jako instanční objekt nakonfigurujte v souboru application.yml následující vlastnosti:

    spring:
      cloud:
        azure:
          credential:
            client-id: ${AZURE_CLIENT_ID}
            client-secret: ${AZURE_CLIENT_SECRET}
          profile:
            tenant-id: <tenant>
          storage:
            queue:
              account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
    

Poznámka:

Pro tenant-idjsou povoleny následující hodnoty: common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) v části Chyba AADSTS50020 – Uživatelský účet poskytovatele identity neexistuje v tenantovi. Informace o převodu aplikace s jedním nájemcem na vícenájemcovou najdete v kapitole Převod jednoklientských aplikací na vícenájemcovou vMicrosoft Entra ID.

  1. StorageQueueTemplate je automaticky nakonfigurovaný. Můžete ho automaticky připojit přímo do vlastních fazolí, abyste mohli odesílat nebo přijímat zprávy, jak je znázorněno v následujícím příkladu:

    @Component
    public class MyBean {
    
        private final StorageQueueTemplate storageQueueTemplate;
    
        public MyBean(StorageQueueTemplate storageQueueTemplate) {
            this.storageQueueTemplate = storageQueueTemplate;
        }
    
        public void someMethod() {
            this.serviceBusTemplate.sendAsync('STORAGE_QUEUE_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe();
        }
    
        public void processMessage() {
            Message<?> message = storageQueueTemplate.receiveAsync('STORAGE_QUEUE_NAME', Duration.ofSeconds(30)).block();
            // ...
        }
    
    }
    

Vzorky

Další informace najdete v úložišti na GitHubu azure-spring-boot-samples .