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.
Setup 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 |
Boolescher Wert | Gibt an, ob ein isolierter ObjectMapper-Bean für den Nachrichtenkonverter der Speicherwarteschlange verwendet wird. Standardmäßig aktiviert. |
spring.cloud.azure.storage.queue.enabled |
Boolescher Wert | Gibt an, ob eine Azure Storage-Warteschlange aktiviert ist. |
spring.cloud.azure.storage.queue.connection-string |
Schnur | Namespace-Verbindungszeichenfolgenwert der Speicherwarteschlange. |
spring.cloud.azure.storage.queue.accountName |
Schnur | Name des Speicherwarteschlangenkontos. |
spring.cloud.azure.storage.queue.accountKey |
Schnur | Speicherwarteschlangenkontoschlüssel. |
Grundlegende Nutzung
Benutzerdefinierter Nachrichtenkonverter für die Speicherwarteschlange
Es gibt zwei Möglichkeiten zum Konfigurieren des Nachrichtenkonverters für die Speicherwarteschlange:
Konfigurieren Sie die folgende Eigenschaft so, dass der standardmäßige Nachrichtenkonverter für die Speicherwarteschlange eine Warteschlange verwendet
ObjectMapper, bei der es sich um Ihren benutzerdefiniertenObjectMapperBean oder eine vom Spring Boot verwaltete Warteschlange handelt:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinieren Sie den Nachrichtenkonverter für die Speicherwarteschlange 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 Konfigurationsoptionen für Anmeldeinformationen mit einem der folgenden Ansätze aus:
Konfigurieren Sie für Anmeldeinformationen als
DefaultAzureCredentialdie folgenden Eigenschaften in Ihrer application.yml Datei: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}Konfigurieren Sie für Anmeldeinformationen als verwaltete Identitäten 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
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
StorageQueueTemplatewird automatisch konfiguriert. Sie können es direkt in Ihre eigenen Bohnen verkabeln, um Nachrichten zu senden oder zu empfangen, wie im folgenden Beispiel gezeigt:@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.