Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak můžete používat Spring Cloud Azure a Spring Messaging Azure Service Bus. Spring Framework poskytuje rozsáhlou podporu integrace se systémy zasílání zpráv.
Zasílání zpráv ve Spring pro Azure Service Bus
Klíčové koncepty
Azure Service Bus je plně spravovaný podnikový zprostředkovatel zpráv s frontami zpráv a tématy publikování a odběru. Projekt Spring Messaging pro Azure Service Bus používá základní koncepty Spring pro vývoj řešení zasílání zpráv založených na sběrnici. Poskytuje šablonu jako abstrakci vysoké úrovně pro odesílání zpráv. Poskytuje také podporu pro objekty POJ řízené zprávami s @ServiceBusListener poznámkami a kontejnerem naslouchacího procesu. Tyto knihovny podporují použití injektáže závislostí a deklarativní konfigurace. Ve všech těchto případech vidíte podobnosti s podporou JMS v rámci podpory Spring Framework a RabbitMQ v aplikaci Spring AMQP.
Nastavení závislostí
<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>
Konfigurace
Knihovna poskytuje následující možnosti konfigurace pro ServiceBusTemplate a @ServiceBusListener:
| Vlastnictví | Typ | Popis |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Určuje, zda se pro převaděč zpráv Service Bus používá izolovaný objekt ObjectMapper bean. Ve výchozím nastavení je povoleno. |
spring.cloud.azure.servicebus.enabled |
Boolean | Určuje, jestli je povolená služba Azure Service Bus. |
spring.cloud.azure.servicebus.connection-string |
Řetězec | Hodnota připojovacího řetězce pro obor názvů služby Service Bus |
spring.cloud.azure.servicebus.custom-endpoint-address |
Řetězec | Vlastní adresa koncového bodu, která se má použít při připojování ke službě Service Bus. |
spring.cloud.azure.servicebus.namespace |
Řetězec | Hodnota oboru názvů služby Service Bus, což je předpona plně kvalifikovaného názvu domény. FQDN by se měl skládat z NamespaceName.DomainName |
spring.cloud.azure.servicebus.entity-type |
Řetězec | Typ entity služby Azure Service Bus. |
Základní použití
Vlastní převaděč zpráv služby Service Bus
Existují dva způsoby konfigurace převaděče zpráv služby Service Bus:
Nakonfigurujte následující vlastnost tak, aby výchozí převaděč zpráv Service Bus používal
ObjectMapperbean, což může být vaše vlastníObjectMapperbean nebo jedna spravovaná aplikací Spring Boot:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefinujte převaděč zpráv Service Bus přímo:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Odesílání zpráv do služby Azure Service Bus
K odesílání zpráv použijte následující postup:
Pomocí jednoho z následujících přístupů vyplňte možnosti konfigurace přihlašovacích údajů:
Pro přihlašovací údaje jako
DefaultAzureCredentialnakonfigurujte v souboru application.yml následující vlastnosti:spring: cloud: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}Pro přihlašovací údaje jako připojovací řetězec nakonfigurujte v souboru application.yml následující vlastnosti:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}U přihlašovacích údajů jako spravovaných identit nakonfigurujte v souboru application.yml následující vlastnosti:
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}
Poznámka:
Pro tenant-idjsou povoleny následující hodnoty: common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) v části Chyba AADSTS50020 – Uživatelský účet poskytovatele identity neexistuje v tenantovi. Informace o převodu aplikace s jedním nájemcem na vícenájemcovou najdete v kapitole Převod jednoklientských aplikací na vícenájemcovou vMicrosoft Entra ID.
Pro přihlašovací údaje pro instanční objekt služby nakonfigurujte v souboru application.yml následující vlastnosti:
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}
Poznámka:
Pro tenant-idjsou povoleny následující hodnoty: common, organizations, consumersnebo ID tenanta. Další informace o těchto hodnotách najdete v části Použití nesprávného koncového bodu (osobní a organizační účty) v části Chyba AADSTS50020 – Uživatelský účet poskytovatele identity neexistuje v tenantovi. Informace o převodu aplikace s jedním nájemcem na vícenájemcovou najdete v kapitole Převod jednoklientských aplikací na vícenájemcovou vMicrosoft Entra ID.
ServiceBusTemplateje automaticky nakonfigurovaný a můžete ho automaticky připojit přímo do vlastních fazolí, jak je znázorněno v následujícím příkladu:@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(); } }
Příjem zpráv ze služby Azure Service Bus
K příjmu zpráv použijte následující postup:
Vyplňte možnosti konfigurace přihlašovacích údajů.
Přidejte anotaci
@EnableAzureMessaging, která spustí vyhledávání metod anotovaných pomocí@ServiceBusListenera na pozadí vytvoří kontejner naslouchače zpráv.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Poznámka:
Aby se zabránilo opakování, od verze
5.21.0se anotace@EnableAzureMessagingautomaticky povoluje pomocí Spring Cloud Azure Auto-configure.Pokud je k dispozici infrastruktura ServiceBus, můžete libovolný bean anotovat pomocí
@ServiceBusListenera vytvořit tak koncový bod naslouchače. Následující komponenta vytvoří koncový bod naslouchacího procesu ve frontěQUEUE_NAME:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
Přizpůsobení vlastností klienta služby Service Bus
Vývojáři můžou pomocí AzureServiceClientBuilderCustomizer přizpůsobit vlastnosti klienta služby Service Bus. Následující příklad přizpůsobí vlastnost sessionIdleTimeout v ServiceBusClientBuilder:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Vzorky
Další informace najdete v úložišti na GitHubu azure-spring-boot-samples .