Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du kan använda Spring Cloud Azure och Spring Messaging Azure Service Bus. Spring Framework ger omfattande stöd för integrering med meddelandesystem.
Spring Messaging för Azure Service Bus
Viktiga begrepp
Azure Service Bus är en fullständigt hanterad meddelandeförmedlare för företag med meddelandeköer och ämnen för publicering och prenumeration. Spring Messaging för Azure Service Bus-projektet tillämpar grundläggande Spring-begrepp på utvecklingen av Service Bus-baserade meddelandelösningar. Den innehåller en mall som en abstraktion på hög nivå för att skicka meddelanden. Det ger också stöd för meddelandedrivna POJO:er med @ServiceBusListener anteckningar och en lyssnarcontainer. Dessa bibliotek främjar användningen av beroendeinmatning och deklarativ konfiguration. I alla dessa fall kan du se likheter med JMS-stödet i Spring Framework och RabbitMQ-stödet i Spring AMQP.
Konfiguration av beroenden
<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>
Konfiguration
Biblioteket innehåller följande konfigurationsalternativ för ServiceBusTemplate och @ServiceBusListener:
| Fastighet | Typ | Beskrivning |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleskt | Om en isolerad ObjectMapper-böna används för Service Bus-meddelandekonverteraren. Aktiverad som standard. |
spring.cloud.azure.servicebus.enabled |
booleskt | Om en Azure Service Bus är aktiverad. |
spring.cloud.azure.servicebus.connection-string |
Sträng | Anslutningssträngsvärde för Service Bus-namnområde. |
spring.cloud.azure.servicebus.custom-endpoint-address |
Sträng | Den anpassade slutpunktsadress som ska användas vid anslutning till Service Bus. |
spring.cloud.azure.servicebus.namespace |
Sträng | Service Bus-namnområdesvärde, som är prefixet för FQDN. Ett FQDN ska bestå av NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
Sträng | Entitetstyp för en Azure Service Bus. |
Grundläggande användning
Custom Service Bus-meddelandekonverterare
Det finns två sätt att konfigurera Service Bus-meddelandekonverteraren:
Konfigurera följande egenskap så att standardkonverteraren för Service Bus-meddelanden använder en
ObjectMapperböna, som kan vara din anpassade bönaObjectMappereller en som hanteras av Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefiniera Service Bus-meddelandekonverterarens böna direkt:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Skicka meddelanden till Azure Service Bus
Använd följande steg för att skicka meddelanden:
Fyll i konfigurationsalternativen för autentiseringsuppgifter med någon av följande metoder:
För autentiseringsuppgifter som
DefaultAzureCredentialkonfigurerar du följande egenskaper i din application.yml-fil:spring: cloud: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}För autentiseringsuppgifter som anslutningssträng konfigurerar du följande egenskaper i filen application.yml:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}För autentiseringsuppgifter som hanterade identiteter konfigurerar du följande egenskaper i din application.yml-fil:
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}
Anmärkning
Följande värden tillåts för tenant-id: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din enklientapp till flerklient finns i Konvertera enklientapp till flerklient på Microsoft Entra ID.
För autentiseringsuppgifter för en service principal konfigurerar du följande egenskaper i din application.yml-fil:
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}
Anmärkning
Följande värden tillåts för tenant-id: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använd fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din enklientapp till flerklient finns i Konvertera enklientapp till flerklient på Microsoft Entra ID.
ServiceBusTemplateär automatiskt konfigurerad och du kan autokoppla den direkt till dina egna bönor, som du ser i följande exempel:@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(); } }
Ta emot meddelanden från Azure Service Bus
Använd följande steg för att ta emot meddelanden:
Fyll i konfigurationsalternativen för autentiseringsuppgifter.
Lägg till
@EnableAzureMessaging-kommentaren, som utlöser identifieringen av metoder som kommenterats med@ServiceBusListeneroch skapar meddelandelyssnarecontainern under omslagen.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Anmärkning
För att undvika upprepning aktiveras annoteringen
@EnableAzureMessagingautomatiskt i Spring Cloud Azure Auto-configure från och med version5.21.0.När ServiceBus-infrastrukturen finns kan du kommentera vilken böna som helst med
@ServiceBusListenerför att skapa en lyssnarslutpunkt. Följande komponent skapar en lyssnarslutpunkt iQUEUE_NAME-kön:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Anpassa Service Bus-klientegenskaper
Utvecklare kan använda AzureServiceClientBuilderCustomizer för att anpassa Service Bus-klientegenskaper. I följande exempel anpassas egenskapen sessionIdleTimeout i ServiceBusClientBuilder:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Exempel
Mer information finns i lagringsplatsen azure-spring-boot-samples på GitHub.