Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come usare Spring Cloud Azure e Spring Messaging Azure Storage Queue. Spring Framework offre un ampio supporto per l'integrazione con i sistemi di messaggistica.
Spring Messaging Coda di Archiviazione Azure
Concetti chiave
Archiviazione code di Azure è un servizio per l'archiviazione di un numero elevato di messaggi. È possibile accedere ai messaggi da qualsiasi parte del mondo tramite chiamate autenticate tramite HTTP o HTTPS. Un messaggio in coda può avere dimensioni fino a 64 KB. Una coda può contenere milioni di messaggi, fino al limite di capacità totale di un account di archiviazione. Le code sono comunemente utilizzate per creare un arretrato di lavoro da processare in maniera asincrona. Il progetto Spring Messaging for Azure Queue Storage applica i concetti di base di Spring allo sviluppo di soluzioni di messaggistica basate sul bus di servizio. Fornisce un modello di come astrazione di alto livello per l'invio e la ricezione di messaggi. Queste librerie promuovono l'uso dell'inserimento delle dipendenze e della configurazione dichiarativa.
Configurazione delle dipendenze
<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>
Configurazione
La libreria offre le opzioni di configurazione seguenti per StorageQueueTemplate:
| Proprietà | TIPO | Descrizione |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleano | Indica se un bean ObjectMapper isolato viene usato per il convertitore di messaggi della coda di archiviazione. Abilitato per impostazione predefinita. |
spring.cloud.azure.storage.queue.enabled |
booleano | Indica se è abilitata una coda di archiviazione di Azure. |
spring.cloud.azure.storage.queue.connection-string |
Stringa | Valore della stringa di connessione dello spazio dei nomi della coda di archiviazione. |
spring.cloud.azure.storage.queue.accountName |
Stringa | Nome dell'account della coda di archiviazione. |
spring.cloud.azure.storage.queue.accountKey |
Stringa | Chiave dell'account della coda di archiviazione. |
Utilizzo di base
Convertitore di messaggi della coda di archiviazione personalizzata
Esistono due modi per configurare il convertitore di messaggi della coda di archiviazione:
Configurare la proprietà seguente in modo che il convertitore di messaggi della coda di archiviazione predefinito usi un
ObjectMapperbean, che può essere il bean personalizzatoObjectMappero uno gestito da Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinire direttamente il bean del convertitore di messaggi della coda di archiviazione:
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Inviare e ricevere messaggi alla coda di Archiviazione di Azure
Usare la procedura seguente per inviare e ricevere messaggi:
Compilare le opzioni di configurazione delle credenziali usando uno degli approcci seguenti:
Per le credenziali come
DefaultAzureCredential, configurare le proprietà seguenti nel file application.yml:spring: cloud: azure: storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}Per le credenziali come stringa di connessione, configurare le proprietà seguenti nel file application.yml:
spring: cloud: azure: storage: queue: connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}Per le credenziali come identità gestite, configurare le proprietà seguenti nel file 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}
Annotazioni
Per tenant-idsono consentiti i valori seguenti: common, organizations, consumerso l'ID tenant. Per ulteriori informazioni su questi valori, consultare la sezione Utilizzato l'endpoint sbagliato (account personali e organizzativi) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione della tua app a tenant singolo in multi-tenant, vedere Convertire app a tenant singolo in multi-tenant in Microsoft Entra ID.
Per le credenziali come entità servizio, configurare le proprietà seguenti nel file 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}
Annotazioni
Per tenant-idsono consentiti i valori seguenti: common, organizations, consumerso l'ID tenant. Per ulteriori informazioni su questi valori, consultare la sezione Utilizzato l'endpoint sbagliato (account personali e organizzativi) di Errore AADSTS50020 - L'account utente del provider di identità non esiste nel tenant. Per informazioni sulla conversione della tua app a tenant singolo in multi-tenant, vedere Convertire app a tenant singolo in multi-tenant in Microsoft Entra ID.
StorageQueueTemplateè configurato automaticamente. È possibile cablarla direttamente nei propri fagioli per inviare o ricevere messaggi, come illustrato nell'esempio seguente:@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(); // ... } }
Esempi
Per altre informazioni, vedere il azure-spring-boot-samples repository in GitHub.