Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak można używać bibliotek Spring Cloud Azure i Spring Messaging Azure Storage Queue. Platforma Spring Framework zapewnia rozbudowaną obsługę integracji z systemami obsługi komunikatów.
Kolejka Storage Azure dla Spring Messaging
Najważniejsze pojęcia
Azure Queue Storage to usługa do przechowywania dużej liczby komunikatów. Uzyskujesz dostęp do komunikatów z dowolnego miejsca na świecie za pośrednictwem uwierzytelnionych wywołań przy użyciu protokołu HTTP lub HTTPS. Komunikat w kolejce może mieć maksymalnie 64 KB rozmiaru. Kolejka może zawierać miliony komunikatów, aż do łącznego limitu pojemności konta magazynowego. Kolejki są często używane do tworzenia zapasu zaległych zadań w celu asynchronicznego przetwarzania zadań. Projekt Spring Messaging for Azure Queue Storage stosuje podstawowe pojęcia dotyczące platformy Spring do opracowywania rozwiązań obsługi komunikatów opartych na magistrali usług. Udostępnia szablon jako abstrakcję wysokiego poziomu do wysyłania i odbierania komunikatów. Te biblioteki promują użycie wstrzykiwania zależności i konfiguracji deklaratywnej.
Konfiguracja zależności
<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>
Konfiguracja
Biblioteka udostępnia następujące opcje konfiguracji dla StorageQueueTemplate:
| Majątek | Typ | Opis |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
typ logiczny (boolowski) | Czy dla konwertera komunikatów Storage Queue jest używany izolowany bean ObjectMapper. Włączone domyślnie. |
spring.cloud.azure.storage.queue.enabled |
typ logiczny (boolowski) | Określa, czy kolejka usługi Azure Storage jest włączona. |
spring.cloud.azure.storage.queue.connection-string |
Sznurek | Wartość ciągu połączenia dla przestrzeni nazw usługi Queue Storage. |
spring.cloud.azure.storage.queue.accountName |
Sznurek | Nazwa konta usługi Storage Queue. |
spring.cloud.azure.storage.queue.accountKey |
Sznurek | Klucz konta usługi Storage Queue. |
Podstawowy sposób użycia
Konwerter komunikatów kolejki usługi Custom Storage
Istnieją dwa sposoby konfigurowania konwertera komunikatów usługi Storage Queue:
Skonfiguruj następującą właściwość, aby domyślny konwerter komunikatów Storage Queue używał beana
ObjectMapper, który może być niestandardowym beanemObjectMapperlub beanem zarządzanym przez Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseZdefiniuj bezpośrednio bean konwertera komunikatów usługi Storage Queue:
@Bean AzureMessageConverter<QueueMessageItem, QueueMessageItem> storageQueueMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Wysyłanie i odbieranie komunikatów w usłudze Azure Storage Queue
Wykonaj następujące kroki, aby wysyłać i odbierać komunikaty:
Wypełnij opcje konfiguracji poświadczeń przy użyciu jednej z następujących metod:
Aby skonfigurować poświadczenia jako
DefaultAzureCredential, skonfiguruj następujące właściwości w pliku application.yml:spring: cloud: azure: storage: queue: account-name: ${AZURE_STORAGE_QUEUE_ACCOUNT_NAME}Jeśli poświadczenia są podawane jako parametry połączenia, skonfiguruj następujące właściwości w pliku application.yml:
spring: cloud: azure: storage: queue: connection-string: ${AZURE_STORAGE_QUEUE_CONNECTION_STRING}W przypadku poświadczeń jako tożsamości zarządzanych skonfiguruj następujące właściwości w pliku 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}
Uwaga
Następujące wartości są dozwolone dla tenant-id: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.
W przypadku poświadczeń jednostki usługi skonfiguruj następujące właściwości w pliku 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}
Uwaga
Następujące wartości są dozwolone dla tenant-id: common, organizations, consumerslub identyfikator dzierżawy. Aby uzyskać więcej informacji na temat tych wartości, zobacz sekcję Użyto nieprawidłowego punktu końcowego (kont osobistych i organizacji) sekcji Błąd AADSTS50020 — konto użytkownika od dostawcy tożsamości nie istnieje wdzierżawy. Aby uzyskać informacje na temat konwertowania aplikacji z jedną dzierżawą, zobacz Convert single-tenant app to multitenant on Microsoft Entra ID.
StorageQueueTemplatejest automatycznie konfigurowany. Możesz automatycznie połączyć go bezpośrednio z własną fasolą w celu wysyłania lub odbierania komunikatów, jak pokazano w poniższym przykładzie:@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(); // ... } }
Przykłady
Więcej informacji można znaleźć w azure-spring-boot-samples repozytorium w serwisie GitHub.