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 używać Spring Cloud Azure i Spring Messaging Azure Service Bus. Platforma Spring Framework zapewnia rozbudowaną obsługę integracji z systemami obsługi komunikatów.
Spring Messaging usługa Azure Service Bus
Najważniejsze pojęcia
Usługa Azure Service Bus to w pełni zarządzany broker komunikatów dla przedsiębiorstw z kolejkami komunikatów i tematami typu publikacja-subskrypcja. Projekt Spring Messaging for Azure Service Bus stosuje podstawowe pojęcia dotyczące platformy Spring do opracowywania rozwiązań do obsługi komunikatów opartych na magistrali usług. Udostępnia szablon jako abstrakcję wysokiego poziomu do wysyłania komunikatów. Zapewnia również obsługę obiektów POJO sterowanych komunikatami z adnotacjami @ServiceBusListener i kontenerem nasłuchującym. Te biblioteki promują użycie wstrzykiwania zależności i konfiguracji deklaratywnej. We wszystkich tych sytuacjach można dostrzec podobieństwa do obsługi JMS w Spring Framework oraz obsługi RabbitMQ w Spring AMQP.
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-servicebus</artifactId>
</dependency>
Konfiguracja
Biblioteka udostępnia następujące opcje konfiguracji dla ServiceBusTemplate i @ServiceBusListener:
| Majątek | Typ | Opis |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
typ logiczny (boolowski) | Czy izolowany bean ObjectMapper jest używany przez konwerter komunikatów Service Bus. Włączone domyślnie. |
spring.cloud.azure.servicebus.enabled |
typ logiczny (boolowski) | Określa, czy usługa Azure Service Bus jest włączona. |
spring.cloud.azure.servicebus.connection-string |
Sznurek | Wartość parametrów połączenia przestrzeni nazw usługi Service Bus. |
spring.cloud.azure.servicebus.custom-endpoint-address |
Sznurek | Niestandardowy adres punktu końcowego do użycia podczas nawiązywania połączenia z usługą Service Bus. |
spring.cloud.azure.servicebus.namespace |
Sznurek | Wartość przestrzeni nazw usługi Service Bus, która jest prefiksem nazwy FQDN. FQDN powinien mieć postać NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
Sznurek | Typ jednostki usługi Azure Service Bus. |
Podstawowy sposób użycia
Niestandardowy konwerter komunikatów usługi Service Bus
Istnieją dwa sposoby konfigurowania konwertera komunikatów usługi Service Bus:
Skonfiguruj następującą właściwość, aby domyślny konwerter komunikatów Service Bus używał beana
ObjectMapper, który może być Twoim niestandardowym beanemObjectMapperlub beanem zarządzanym przez Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseZdefiniuj bezpośrednio fasolę konwertera komunikatów usługi Service Bus:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Wysyłanie komunikatów do usługi Azure Service Bus
Aby wysyłać komunikaty, wykonaj następujące czynności:
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: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}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: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}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> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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> servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}
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.
ServiceBusTemplatejest automatycznie konfigurowana i można ją automatycznie połączyć bezpośrednio z własnymi fasolami, jak pokazano w poniższym przykładzie:@Component public class MyBean { private final ServiceBusTemplate serviceBusTemplate; public MyBean(ServiceBusTemplate serviceBusTemplate) { this.serviceBusTemplate = serviceBusTemplate; } public void someMethod() { this.serviceBusTemplate.sendAsync('QUEUE_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } }
Odbieranie komunikatów z usługi Azure Service Bus
Aby odbierać komunikaty, wykonaj następujące czynności:
Wypełnij opcje konfiguracji poświadczeń.
Dodaj adnotację
@EnableAzureMessaging, która powoduje wykrywanie metod opatrzonych adnotacją@ServiceBusListener, niejawnie tworząc kontener nasłuchiwania komunikatów.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Uwaga
Aby uniknąć powtórzeń, od wersji
5.21.0adnotacja włączająca@EnableAzureMessagingw Spring Cloud Azure Auto-configure jest włączana automatycznie.Gdy infrastruktura ServiceBus jest dostępna, możesz opatrzyć dowolny komponent adnotacją
@ServiceBusListener, aby utworzyć punkt końcowy nasłuchiwania. Następujący składnik tworzy punkt końcowy odbiornika w kolejceQUEUE_NAME:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Dostosowywanie właściwości klienta usługi Service Bus
Deweloperzy mogą używać AzureServiceClientBuilderCustomizer do dostosowywania właściwości klienta usługi Service Bus. Poniższy przykład dostosowuje właściwość sessionIdleTimeout w ServiceBusClientBuilder:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Przykłady
Aby uzyskać więcej informacji, zobacz repozytorium azure-spring-boot-samples w serwisie GitHub.