Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Spring Cloud Azure en Spring Messaging Azure Service Bus kunt gebruiken. Het Spring Framework biedt uitgebreide ondersteuning voor integratie met berichtensystemen.
Spring-berichtenverkeer Azure Servicebus
Belangrijke concepten
Azure Service Bus is een volledig beheerde enterprise-berichtenbroker met berichtenwachtrijen en onderwerpen over publiceren/abonneren. Het Spring Messaging-project voor Azure Service Bus past kernconcepten van Spring toe op de ontwikkeling van op service bus gebaseerde berichtenoplossingen. Het biedt een sjabloon als een abstractie op hoog niveau voor het verzenden van berichten. Het biedt ook ondersteuning voor berichtgestuurde POJOs met @ServiceBusListener aantekeningen en een listenercontainer. Deze bibliotheken bevorderen het gebruik van afhankelijkheidsinjectie en declaratieve configuratie. In al deze gevallen ziet u overeenkomsten met de JMS-ondersteuning in het Spring Framework en RabbitMQ-ondersteuning in Spring AMQP.
Afhankelijkheid instellen
<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>
Configuratie
De bibliotheek biedt de volgende configuratieopties voor ServiceBusTemplate en @ServiceBusListener:
| Vastgoed | Typ | Beschrijving |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
booleaan | Of een geïsoleerde ObjectMapper-bean wordt gebruikt voor Service Bus-berichtconversieprogramma. Standaard ingeschakeld. |
spring.cloud.azure.servicebus.enabled |
booleaan | Of een Azure Service Bus is ingeschakeld. |
spring.cloud.azure.servicebus.connection-string |
Touwtje | Service Bus-naamruimteverbindingsreekswaarde. |
spring.cloud.azure.servicebus.custom-endpoint-address |
Touwtje | Het aangepaste eindpuntadres dat moet worden gebruikt bij het maken van verbinding met Service Bus. |
spring.cloud.azure.servicebus.namespace |
Touwtje | Service Bus-naamruimtewaarde, het voorvoegsel van de FQDN. Een FQDN moet bestaan uit NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
Touwtje | Entiteitstype van een Azure Service Bus. |
Basaal gebruik
Custom Service Bus-berichtconversieprogramma
Er zijn twee manieren om Service Bus-berichtconversieprogramma te configureren:
Configureer de volgende eigenschap zodat de standaard Service Bus-berichtconverter een
ObjectMapper-bean gebruikt. Dit kan uw aangepasteObjectMapper-bean zijn of een bean die door Spring Boot wordt beheerd:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinieer de Service Bus-berichtconversieprogramma rechtstreeks:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Berichten verzenden naar Azure Service Bus
Gebruik de volgende stappen om berichten te verzenden:
Vul de configuratieopties voor aanmeldgegevens in op een van de volgende manieren:
Voor aanmeldingsgegevens als
DefaultAzureCredentialconfigureert u de volgende eigenschappen in uw application.yml-bestand:spring: cloud: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Voor referenties als verbindingsreeks configureert u de volgende eigenschappen in uw application.yml-bestand:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Voor referenties als beheerde identiteiten configureert u de volgende eigenschappen in uw application.yml-bestand:
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}
Opmerking
De volgende waarden zijn toegestaan voor tenant-id: common, organizations, consumersof de tenant-id. Zie voor meer informatie over deze waarden de sectie Verkeerd eindpunt gebruikt (persoonlijke en organisatieaccounts) van Fout AADSTS50020 - Gebruikersaccount van identiteitsprovider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
Voor aanmeldingsgegevens voor een service-principal configureert u de volgende eigenschappen in uw application.yml-bestand:
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}
Opmerking
De volgende waarden zijn toegestaan voor tenant-id: common, organizations, consumersof de tenant-id. Zie voor meer informatie over deze waarden de sectie Verkeerd eindpunt gebruikt (persoonlijke en organisatieaccounts) van Fout AADSTS50020 - Gebruikersaccount van identiteitsprovider bestaat niet in tenant. Zie App met één tenant converteren naar multitenant op Microsoft Entra IDvoor meer informatie over het converteren van uw app met één tenant.
ServiceBusTemplateis automatisch geconfigureerd en u kunt deze rechtstreeks in uw eigen bonen instellen, zoals wordt weergegeven in het volgende voorbeeld:@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(); } }
Berichten ontvangen van Azure Service Bus
Gebruik de volgende stappen om berichten te ontvangen:
Vul de configuratieopties voor inloggegevens in.
Voeg de
@EnableAzureMessagingannotatie toe, die de detectie activeert van methoden die zijn geannoteerd met@ServiceBusListener, waardoor de container voor de berichtlistener onder de covers wordt gemaakt.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Opmerking
Om herhaling te voorkomen, wordt de annotatie
@EnableAzureMessagingsinds versie5.21.0automatisch ingeschakeld door Spring Cloud Azure Auto-configure.Wanneer de ServiceBus-infrastructuur aanwezig is, kunt u aantekeningen maken bij elke bean met
@ServiceBusListenerom een listener-eindpunt te maken. Met het volgende onderdeel maakt u een listener-eindpunt in deQUEUE_NAMEwachtrij:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Eigenschappen van Service Bus-client aanpassen
Ontwikkelaars kunnen AzureServiceClientBuilderCustomizer gebruiken om eigenschappen van de Service Bus-client aan te passen. In het volgende voorbeeld wordt de eigenschap sessionIdleTimeout in ServiceBusClientBuilderaangepast:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Voorbeelden
Zie de azure-spring-boot-samples opslagplaats op GitHub voor meer informatie.