Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
ObjectMapperbean, qui peut être votre bean personnaliséObjectMapperou un géré par Spring Boot :spring: cloud: azure: message-converter: isolated-object-mapper: falseDé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 :
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.
StorageQueueTemplateest 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.