Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser Spring Cloud Azure et Spring Messaging stockage Azure Queue. 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
Le stockage de files d’attente Azure est un service qui permet 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 concepts fondamentaux de Spring au développement de solutions de messagerie basées sur un bus de services. 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é | Type | Descriptif |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
boolean | Indique si un bean ObjectMapper isolé est utilisé pour le convertisseur de messages de la file d’attente de stockage. Activé par défaut. |
spring.cloud.azure.storage.queue.enabled |
boolean | 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 la file d’attente de stockage. |
spring.cloud.azure.storage.queue.accountName |
Chaîne | Nom du compte de la file d’attente de stockage. |
spring.cloud.azure.storage.queue.accountKey |
Chaîne | Clé du compte de file d’attente de stockage. |
Utilisation de base
Convertisseur personnalisé de messages de file d’attente de stockage
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 bean convertisseur de message pour la file d’attente de stockage :
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Envoyer et recevoir des messages dans la file d’attente du 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.