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álhatja a Spring Cloud Azure-t és a Spring Messaging Azure Event Hubsot. 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 Event Hubs
Főbb fogalmak
Az Azure Event Hubs egy natív adatstreamelési szolgáltatás a felhőben, amely másodpercenként több millió eseményt képes streamelni, alacsony késéssel, bármilyen forrásból bármilyen célhelyre. Az Azure Event Hubs Spring Messaging projektje az alapvető Spring-fogalmakat alkalmazza az event hubs-alapú üzenetkezelési megoldások fejlesztésére. Az üzenetküldés magas szintű absztrakciójaként egy sablont biztosít. Emellett támogatást nyújt az üzenetvezérelt egyszerű régi Java-objektumokhoz (POJO-khoz) @EventHubsListener annotációkkal és egy figyelőkonténerrel. 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-eventhubs</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-blob</artifactId>
</dependency>
Konfiguráció
A kódtár a következő konfigurációs beállításokat biztosítja EventHubsTemplate és @EventHubsListener:
| 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 az Event Hubs üzenetkonverteréhez. Alapértelmezés szerint engedélyezve van. |
spring.cloud.azure.eventhubs.enabled |
Boolean | Az Azure Event Hubs engedélyezése. |
spring.cloud.azure.eventhubs.connection-string |
Lánc | Az Event Hubs-névtér kapcsolati karakterláncának értéke. |
spring.cloud.azure.eventhubs.namespace |
Lánc | Az Event Hubs névtér értéke, amely az FQDN előtagja. Az FQDN-nek a NamespaceName.DomainName elemekből kell állnia |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-name |
Lánc | A tárfiók neve. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.account-key |
Lánc | Tárfiók hozzáférési kulcsa. |
spring.cloud.azure.eventhubs.processor.checkpoint-store.container-name |
Lánc | Tárolókonténer neve. |
Alapszintű használat
Egyéni Event Hubs üzenet-átalakító
Az Event Hubs üzenetkonverter kétféleképpen konfigurálható:
Konfigurálja a következő tulajdonságot úgy, hogy az alapértelmezett Event Hubs üzenetkonverter egy
ObjectMapperbeant használjon, amely lehet az egyéniObjectMapperbeanje vagy a Spring Boot által felügyelt bean:spring: cloud: azure: message-converter: isolated-object-mapper: falseAdja meg közvetlenül az Event Hubs üzenetkonverterét:
@Bean AzureMessageConverter<EventData, EventData> eventHubsMessageConverter() { JsonMapper jsonMapper = JsonMapper.builder().addModule(new JavaTimeModule()).build(); return new EventHubsMessageConverter(jsonMapper); }
Üzenetek küldése az Azure Event Hubsba
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: eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT}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: eventhubs: connection-string: ${AZURE_EVENT_HUBS_CONNECTION_STRING} processor: checkpoint-store: container-name: ${CHECKPOINT-CONTAINER} account-name: ${CHECKPOINT-STORAGE-ACCOUNT} account-key: ${CHECKPOINT-ACCESS-KEY}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} eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}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> eventhubs: namespace: ${AZURE_EVENT_HUBS_NAMESPACE} processor: checkpoint-store: container-name: ${CONTAINER_NAME} account-name: ${ACCOUNT_NAME}
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.
EventHubsTemplateautomatikusan 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 EventHubsTemplate eventHubsTemplate; public MyBean(EventHubsTemplate eventHubsTemplate) { this.eventHubsTemplate = eventHubsTemplate; } public void someMethod() { this.eventHubsTemplate.sendAsync('EVENT_HUB_NAME', MessageBuilder.withPayload("Hello world").build()).subscribe(); } }
Üzenetek fogadása az Azure Event Hubsbó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 az alábbi példában látható módon. Ez a megjegyzés elindítja a@EventHubsListenerjegyzetekkel 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.Ha az Event Hubs-infrastruktúra rendelkezésre áll, bármely beant elláthatja a(z)
@EventHubsListenerannotációval egy figyelővégpont létrehozásához. A következő összetevő létrehoz egy figyelővégpontot azEVENT_HUB_NAMEeseményközpontban és a$Defaultfogyasztói csoportban:@Component public class MyBean { @EventHubsListener(destination = "EVENT_HUB_NAME", group = "$Default") public void processMessage(String content) { // ... } }
Minták
További információt a azure-spring-boot-samples GitHub adattárában talál.