Prise en charge de Spring Cloud Azure pour la file d’attente de stockage Azure Spring Messaging

Cet article explique comment utiliser la file d’attente de stockage Azure Spring Cloud et Spring Messaging. Spring Framework offre une prise en charge étendue de l’intégration à des systèmes de messagerie.

File d'attente de stockage Azure pour Spring Messaging

Concepts clés

Stockage File d’attente Azure est un service permettant de stocker un grand nombre de messages. Vous accédez à des messages depuis n’importe où dans le monde via des appels authentifiés à l’aide de HTTP ou HTTPS. Un message de file d’attente peut comporter jusqu’à 64 Ko de taille. Une file d’attente peut contenir des millions de messages, jusqu’à la limite totale de capacité d’un compte de stockage. Les files d’attente sont couramment utilisées pour créer un backlog de travail à traiter de manière asynchrone. Le projet Spring Messaging pour Stockage File d’attente Azure applique les principaux concepts Spring au développement de solutions de messagerie basées sur Service Bus. Il fournit un modèle en tant qu’abstraction générale pour l’envoi et la réception de messages. Ces bibliothèques favorisent l’utilisation de l’injection de dépendances et de la configuration déclarative.

Configuration des dépendances

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

Paramétrage

La bibliothèque fournit les options de configuration suivantes pour StorageQueueTemplate:

Propriété Catégorie Descriptif
spring.cloud.azure.message-converter.isolated-object-mapper booléen Indique si une bean ObjectMapper isolée est utilisée pour le convertisseur de messages de file d’attente de stockage. Activé par défaut.
spring.cloud.azure.storage.queue.enabled booléen Indique si une file d’attente stockage Azure est activée.
spring.cloud.azure.storage.queue.connection-string Chaîne Valeur de la chaîne de connexion de l’espace de noms de file d’attente du stockage.
spring.cloud.azure.storage.queue.accountName Chaîne Nom du compte file d’attente de stockage.
spring.cloud.azure.storage.queue.accountKey Chaîne Clé de compte de file d’attente de stockage.

Utilisation de base

Convertisseur de messages de file d’attente de stockage personnalisé

Il existe deux façons de configurer le convertisseur de messages de file d’attente de stockage :

  • Configurez la propriété suivante pour que le convertisseur de messages file d’attente de stockage par défaut utilise un ObjectMapper bean, qui peut être votre bean personnalisé ObjectMapper ou un géré par Spring Boot :

    spring:
      cloud:
        azure:
          message-converter:
            isolated-object-mapper: false
    
  • Définissez directement le convertisseur de messages de file d’attente du stockage :

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

Envoyer et recevoir des messages à la file d’attente stockage Azure

Pour envoyer et recevoir des messages, procédez comme suit :

  1. Renseignez les options de configuration des informations d’identification à l’aide de l’une des approches suivantes :

    • Pour les informations d’identification en tant que DefaultAzureCredential, configurez les propriétés suivantes dans votre fichier application.yml :

      spring:
        cloud:
          azure:
            storage:
              queue:
                account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}
      
    • Pour les informations d’identification sous forme de chaîne de connexion, configurez les propriétés suivantes dans votre fichier application.yml :

      spring:
        cloud:
          azure:
            storage:
              queue:
                connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}
      
    • Pour les informations d’identification en tant qu’identités managées, configurez les propriétés suivantes dans votre fichier application.yml :

      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}
      

Remarque

Les valeurs suivantes sont autorisées pour tenant-id: common, organizations, consumersou l’ID de locataire. Pour plus d’informations sur ces valeurs, consultez la section Utilisation d’un point de terminaison incorrect (comptes personnels et d’organisation) de l’article Erreur AADSTS50020 : Le compte d’utilisateur du fournisseur d’identité n’existe pas dans le locataire. Pour plus d’informations sur la conversion de votre application monolocataire, consultez Convertir une application monolocataire en application multilocataire sur Microsoft Entra ID.

  • Pour les informations d’identification en tant que principal de service, configurez les propriétés suivantes dans votre fichier application.yml :

    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}
    

Remarque

Les valeurs suivantes sont autorisées pour tenant-id: common, organizations, consumersou l’ID de locataire. Pour plus d’informations sur ces valeurs, consultez la section Utilisation d’un point de terminaison incorrect (comptes personnels et d’organisation) de l’article Erreur AADSTS50020 : Le compte d’utilisateur du fournisseur d’identité n’existe pas dans le locataire. Pour plus d’informations sur la conversion de votre application monolocataire, consultez Convertir une application monolocataire en application multilocataire sur Microsoft Entra ID.

  1. StorageQueueTemplate est configuré automatiquement. Vous pouvez le connecter automatiquement directement dans vos propres haricots pour envoyer ou recevoir des messages, comme illustré dans l’exemple suivant :

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

Échantillons

Pour plus d’informations, consultez le azure-spring-boot-samples référentiel sur GitHub.