Dela via


Spring Cloud Azure-stöd för Spring Messaging Azure Storage Queue

Den här artikeln beskriver hur du kan använda Spring Cloud Azure och Spring Messaging Azure Storage Queue. Spring Framework ger omfattande stöd för integrering med meddelandesystem.

Spring Meddelandehantering för Azure Storage-kö

Viktiga begrepp

Azure Queue Storage är en tjänst för att lagra ett stort antal meddelanden. Du kommer åt meddelanden var som helst i världen via autentiserade anrop med HTTP eller HTTPS. Ett kömeddelande kan vara upp till 64 KB stort. En kö kan innehålla miljontals meddelanden, upp till den totala kapacitetsgränsen för ett lagringskonto. Köer används ofta för att skapa en arbetskö som ska bearbetas asynkront. Spring Messaging för Azure Queue Storage-projektet tillämpar grundläggande Spring-begrepp på utvecklingen av Service Bus-baserade meddelandelösningar. Den innehåller en mall som en abstraktion på hög nivå för att skicka och ta emot meddelanden. Dessa bibliotek främjar användningen av beroendeinmatning och deklarativ konfiguration.

Beroendekonfiguration

<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>

Konfiguration

Biblioteket innehåller följande konfigurationsalternativ för StorageQueueTemplate:

Fastighet Typ Beskrivning
spring.cloud.azure.message-converter.isolated-object-mapper booleskt Om en isolerad ObjectMapper-böna används för meddelandekonverteraren för Lagringskö. Aktiverad som standard.
spring.cloud.azure.storage.queue.enabled booleskt Om en Azure Storage-kö är aktiverad.
spring.cloud.azure.storage.queue.connection-string Sträng Anslutningssträngsvärde för lagringskönamnområde.
spring.cloud.azure.storage.queue.accountName Sträng Namn på lagringskökonto.
spring.cloud.azure.storage.queue.accountKey Sträng Kontonyckel för lagringskö.

Grundläggande användning

Meddelandekonverterare för anpassad lagringskö

Det finns två sätt att konfigurera meddelandekonverteraren för Lagringskö:

  • Konfigurera följande egenskap så att standardkonverteraren för lagringskömeddelanden använder en ObjectMapper böna, som kan vara din anpassade böna ObjectMapper eller en som hanteras av Spring Boot:

    spring:
      cloud:
        azure:
          message-converter:
            isolated-object-mapper: false
    
  • Definiera lagringskömeddelandekonverterarens böna direkt:

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

Skicka och ta emot meddelanden till Azure Storage Queue

Använd följande steg för att skicka och ta emot meddelanden:

  1. Fyll i konfigurationsalternativen för autentiseringsuppgifter med någon av följande metoder:

    • För autentiseringsuppgifter som DefaultAzureCredentialkonfigurerar du följande egenskaper i din application.yml-fil:

      spring:
        cloud:
          azure:
            storage:
              queue:
                account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
      
    • För autentiseringsuppgifter som anslutningssträng konfigurerar du följande egenskaper i filen application.yml:

      spring:
        cloud:
          azure:
            storage:
              queue:
                connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}
      
    • För autentiseringsuppgifter som hanterade identiteter konfigurerar du följande egenskaper i din application.yml-fil:

      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}
      

Anmärkning

Följande värden tillåts för tenant-id: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din enklientapp till flerklient finns i Konvertera enklientapp till flerklient på Microsoft Entra ID.

  • För autentiseringsuppgifter som tjänstens huvudnamn konfigurerar du följande egenskaper i din application.yml-fil:

    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}
    

Anmärkning

Följande värden tillåts för tenant-id: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din enklientapp till flerklient finns i Konvertera enklientapp till flerklient på Microsoft Entra ID.

  1. StorageQueueTemplate konfigureras automatiskt. Du kan autokoppla den direkt till dina egna bönor för att skicka eller ta emot meddelanden, som du ser i följande exempel:

    @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();
            // ...
        }
    
    }
    

Exempel

Mer information finns i azure-spring-boot-samples lagringsplats på GitHub.