Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Spring Cloud Azure und Spring Messaging Azure Storage Queue verwenden können. Das Spring Framework bietet umfassende Unterstützung für die Integration in Messaging-Systeme.
Azure Storage-Warteschlange für Spring Messaging
Wichtige Begriffe
Azure Queue Storage ist ein Dienst zum Speichern großer Anzahl von Nachrichten. Sie greifen über authentifizierte Anrufe über HTTP oder HTTPS auf Nachrichten von überall auf der Welt zu. Eine Warteschlangennachricht kann bis zu 64 KB groß sein. Eine Warteschlange kann Millionen von Nachrichten bis zum Gesamtkapazitätslimit eines Speicherkontos enthalten. Warteschlangen werden häufig verwendet, um einen Arbeitsbestand zu erstellen, der asynchron verarbeitet werden kann. Das Spring Messaging für Azure Queue Storage-Projekt wendet kerne Spring-Konzepte auf die Entwicklung von service busbasierten Messaging-Lösungen an. Sie stellt eine Vorlage als allgemeine Abstraktion zum Senden und Empfangen von Nachrichten bereit. Diese Bibliotheken fördern die Verwendung von Abhängigkeitsinjektion und deklarativer Konfiguration.
Einrichtung von Abhängigkeiten
<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
Die Bibliothek bietet die folgenden Konfigurationsoptionen für StorageQueueTemplate:
| Eigentum | Typ | BESCHREIBUNG |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
boolean | Ob für den Nachrichtenkonverter der Storage Queue eine separate ObjectMapper-Bean verwendet wird. Standardmäßig aktiviert. |
spring.cloud.azure.storage.queue.enabled |
boolean | Gibt an, ob eine Azure Storage-Warteschlange aktiviert ist. |
spring.cloud.azure.storage.queue.connection-string |
Schnur | Wert der Verbindungszeichenfolge für den Namespace der Speicherwarteschlange. |
spring.cloud.azure.storage.queue.accountName |
Schnur | Name des Warteschlangenspeicherkontos. |
spring.cloud.azure.storage.queue.accountKey |
Schnur | Kontoschlüssel der Storage Queue. |
Grundlegende Nutzung
Benutzerdefinierter Nachrichtenkonverter für Storage-Warteschlangen
Es gibt zwei Möglichkeiten, den Nachrichtenkonverter für Storage Queue zu konfigurieren:
Konfigurieren Sie die folgende Eigenschaft so, dass der standardmäßige Nachrichtenkonverter für die Storage Queue ein
ObjectMapper-Bean verwendet, bei dem es sich um Ihr benutzerdefiniertesObjectMapper-Bean oder um ein von Spring Boot verwaltetes Bean handeln kann:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinieren Sie die Bean für den Storage-Queue-Nachrichtenkonverter direkt:
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Senden und Empfangen von Nachrichten an die Azure Storage-Warteschlange
Führen Sie die folgenden Schritte aus, um Nachrichten zu senden und zu empfangen:
Füllen Sie die Optionen für die Konfiguration der Anmeldeinformationen mit einer der folgenden Methoden aus:
Konfigurieren Sie für Anmeldeinformationen als
DefaultAzureCredentialdie folgenden Eigenschaften in Ihrer Datei application.yml:spring: cloud: azure: storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}Konfigurieren Sie für Anmeldeinformationen als Verbindungszeichenfolge die folgenden Eigenschaften in Ihrer application.yml Datei:
spring: cloud: azure: storage: queue: connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}Wenn Sie verwaltete Identitäten als Anmeldeinformationen verwenden, konfigurieren Sie die folgenden Eigenschaften in Ihrer application.yml-Datei:
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}
Hinweis
Die folgenden Werte sind für tenant-idzulässig: common, organizations, consumersoder die Mandanten-ID. Weitere Informationen zu diesen Werten finden Sie im Abschnitt Falschen Endpunkt verwendet (persönliche Konten und Organisationskonten) in Fehler AADSTS50020 – Benutzerkonto des Identitätsanbieters ist im Mandanten nicht vorhanden. Informationen zum Umwandeln Ihrer Single-Tenant-App finden Sie unter Single-Tenant-App in eine Multitenant-App auf Microsoft Entra ID umwandeln.
Konfigurieren Sie für Anmeldeinformationen als Dienstprinzipal die folgenden Eigenschaften in Ihrer application.yml-Datei:
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}
Hinweis
Die folgenden Werte sind für tenant-idzulässig: common, organizations, consumersoder die Mandanten-ID. Weitere Informationen zu diesen Werten finden Sie im Abschnitt Falschen Endpunkt verwendet (persönliche Konten und Organisationskonten) in Fehler AADSTS50020 – Benutzerkonto des Identitätsanbieters ist im Mandanten nicht vorhanden. Informationen zum Umwandeln Ihrer Single-Tenant-App finden Sie unter Single-Tenant-App in eine Multitenant-App auf Microsoft Entra ID umwandeln.
StorageQueueTemplatewird automatisch konfiguriert. Sie können es per Autowiring direkt in Ihre eigenen Beans einbinden, um Nachrichten zu senden oder zu empfangen, wie das folgende Beispiel zeigt:@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(); // ... } }
Beispiele
Weitere Informationen finden Sie im azure-spring-boot-samples Repository auf GitHub.