Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk azt ismerteti, hogyan használható a Spring Cloud Azure és a Spring Messaging Azure Service Bus. A Spring Framework széles körű támogatást nyújt az üzenetkezelési rendszerekkel való integrációhoz.
Spring Üzenetküldés Azure Service Bus
Főbb fogalmak
Az Azure Service Bus egy teljes körűen felügyelt vállalati üzenetközvetítő üzenetsorokkal és közzétételi feliratkozási témakörökkel. Az Azure Service Bus-hoz készült Spring Messaging projekt alapvető Spring-fogalmakat alkalmaz a Service Bus-alapú üzenetkezelési megoldások fejlesztésére. Az üzenetküldés magas szintű absztrakciójaként egy sablont biztosít. Emellett támogatja az üzenetvezérelt POJ-kat @ServiceBusListener széljegyzetekkel és egy figyelőtárolóval. Ezek a kódtárak elősegítik a függőséginjektálás és a deklaratív konfiguráció használatát. Ezekben az esetekben hasonlóságok láthatók a Spring Framework JMS-támogatásához és a Spring AMQP RabbitMQ-támogatásához.
Függőségek beállítása
<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>
Konfiguráció
A kódtár a következő konfigurációs beállításokat biztosítja ServiceBusTemplate és @ServiceBusListener:
| Ingatlan | Típus | Leírás |
|---|---|---|
spring.cloud.azure.message-converter.isolated-object-mapper |
Boolean | Azt jelzi, hogy egy izolált ObjectMapper-babot használnak-e a Service Bus üzenetkonverteréhez. Alapértelmezés szerint engedélyezve van. |
spring.cloud.azure.servicebus.enabled |
Boolean | Az Azure Service Bus engedélyezése. |
spring.cloud.azure.servicebus.connection-string |
Lánc | A Service Bus-névtér kapcsolati karakterláncának értéke. |
spring.cloud.azure.servicebus.custom-endpoint-address |
Lánc | A Service Bushoz való csatlakozáskor használandó egyéni végpontcím. |
spring.cloud.azure.servicebus.namespace |
Lánc | A Service Bus névtér értéke, amely az FQDN előtagja. Az FQDN-nek a NamespaceName.DomainName elemekből kell állnia |
spring.cloud.azure.servicebus.entity-type |
Lánc | Az Azure Service Bus entitástípusa. |
Alapszintű használat
Custom Service Bus üzenetkonverter
A Service Bus üzenetkonverter kétféleképpen konfigurálható:
Konfigurálja a következő tulajdonságot úgy, hogy az alapértelmezett Service Bus üzenetkonverter egy
ObjectMapperbeant használjon, amely lehet az Ön egyéniObjectMapperbeanje vagy egy Spring Boot által felügyelt bean:spring: cloud: azure: message-converter: isolated-object-mapper: falseDefiniálja közvetlenül a Service Bus üzenetkonverter bean-t:
@Bean AzureMessageConverter<ServiceBusReceivedMessage, ServiceBusMessage> serviceBusMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new ServiceBusMessageConverter(jsonMapper); }
Üzenetek küldése az Azure Service Busba
A következő lépésekkel küldhet üzeneteket:
Adja meg a hitelesítő adatok konfigurációs beállításait az alábbi módszerek egyikével:
Hitelesítő adatok
DefaultAzureCredentialesetén konfigurálja a következő tulajdonságokat a application.yml fájlban:spring: cloud: azure: servicebus: namespace: ${AZURE_SERVICE_BUS_NAMESPACE} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}A hitelesítő adatok kapcsolati sztringként való megadásához konfigurálja a következő tulajdonságokat a application.yml fájlban:
spring: cloud: azure: servicebus: connection-string: ${AZURE_SERVICE_BUS_CONNECTION_STRING} entity-type: ${AZURE_SERVICE_BUS_ENTITY_TYPE}A hitelesítő adatok felügyelt identitásként való megadásához konfigurálja a következő tulajdonságokat a application.yml fájlban:
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}
Megjegyzés:
A következő értékek engedélyezettek tenant-id: common, organizations, consumersvagy bérlőazonosító. Ezekről az értékekről további információt a Helytelen végpont (személyes és szervezeti fiókok) szakaszában talál, amely az AADSTS50020 - Az identitásszolgáltatótól származó felhasználói fiók nem létezik a bérlőben hiba részét képezi. Az egybérlős alkalmazás konvertálásáról további információért lásd: Az egybérlős alkalmazás átalakítása több-bérlőssé a Microsoft Entra ID rendszeren.
A szolgáltatásnév-azonosítóként használt hitelesítő adatokhoz állítsa be a következő tulajdonságokat a application.yml fájlban:
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}
Megjegyzés:
A következő értékek engedélyezettek tenant-id: common, organizations, consumersvagy bérlőazonosító. Ezekről az értékekről további információt a Helytelen végpont (személyes és szervezeti fiókok) szakaszában talál, amely az AADSTS50020 - Az identitásszolgáltatótól származó felhasználói fiók nem létezik a bérlőben hiba részét képezi. Az egybérlős alkalmazás konvertálásáról további információért lásd: Az egybérlős alkalmazás átalakítása több-bérlőssé a Microsoft Entra ID rendszeren.
ServiceBusTemplateautomatikusan konfigurálva van, és közvetlenül a saját babjába is beviheti, ahogy az alábbi példában látható:@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(); } }
Üzenetek fogadása az Azure Service Busból
Az üzenetek fogadásához kövesse az alábbi lépéseket:
Adja meg a hitelesítő adatok konfigurációs beállításait.
Adja hozzá a
@EnableAzureMessagingmegjegyzést, amely elindítja a@ServiceBusListenerjegyzetekkel ellátott metódusok felderítését, és létrehozza az üzenetfigyelő tárolót a borítók alatt.@SpringBootApplication @EnableAzureMessaging public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }Megjegyzés:
Az ismétlés elkerülése érdekében a Spring Cloud Azure Auto-configure a
5.21.0verziótól kezdve automatikusan engedélyezte a@EnableAzureMessagingannotációt.Amikor a ServiceBus-infrastruktúra elérhető, bármely bean-t elláthatja a(z)
@ServiceBusListenerannotációval egy figyelővégpont létrehozásához. A következő összetevő létrehoz egy figyelővégpontot aQUEUE_NAMEüzenetsoron:@Component public class MyBean { @ServiceBusListener(destination = "QUEUE_NAME") public void processMessage(String content) { // ... } }
A Service Bus-ügyfél tulajdonságainak testreszabása
A fejlesztők a AzureServiceClientBuilderCustomizer segítségével testre szabhatják a Service Bus-ügyfél tulajdonságait. Az alábbi példa a sessionIdleTimeoutServiceBusClientBuilder tulajdonságát szabja testre:
@Bean
public AzureServiceClientBuilderCustomizer<ServiceBusClientBuilder.ServiceBusSessionProcessorClientBuilder> customizeBuilder() {
return builder -> builder.sessionIdleTimeout(Duration.ofSeconds(10));
}
Minták
További információt a azure-spring-boot-samples GitHub adattárában talál.