A Spring Kafka használata az Azure Event Hubs for Kafka API-val
Ez az oktatóanyag bemutatja, hogyan konfigurálhat egy Java-alapú Spring Cloud Stream Bindert, hogy az Azure Event Hubs for Kafka használatával üzeneteket küldjön és fogadjon az Azure Event Hubsszal. További információ: Az Azure Event Hubs használata Apache Kafka-alkalmazásokból
Ebben az oktatóanyagban két hitelesítési módszert fogunk tartalmazni: a Microsoft Entra-hitelesítést és a közös hozzáférésű jogosultságkódokat (SAS). A Jelszó nélküli lapon a Microsoft Entra-hitelesítés, a Csatlakozás ion sztring lapon pedig az SAS-hitelesítés látható.
A Microsoft Entra-hitelesítés az Azure Event Hubs for Kafkához való csatlakozás mechanizmusa a Microsoft Entra ID-ban meghatározott identitások használatával. A Microsoft Entra-hitelesítéssel központi helyen kezelheti az adatbázis felhasználói identitásait és más Microsoft-szolgáltatások, ami leegyszerűsíti az engedélykezelést.
Az SAS-hitelesítés az Azure Event Hubs-névtér kapcsolati sztring használja a Kafkához készült Event Hubs delegált hozzáféréséhez. Ha úgy dönt, hogy hitelesítő adatokként használja a közös hozzáférésű jogosultságkódokat, a kapcsolati sztring önállóan kell kezelnie.
Előfeltételek
Azure-előfizetés – hozzon létre egyet ingyenesen.
A Java Development Kit (JDK) 8- vagy újabb verziója.
Apache Maven, 3.2-es vagy újabb verzió.
cURL vagy hasonló HTTP-segédprogram a funkciók teszteléséhez.
Azure Cloud Shell vagy Azure CLI 2.37.0 vagy újabb.
Egy Azure Event Hub. Ha nincs ilyenje, hozzon létre egy eseményközpontot az Azure Portal használatával.
Egy Spring Boot-alkalmazás. Ha nem rendelkezik ilyennel, hozzon létre egy Maven-projektet a Spring Initializrrel. Mindenképpen válassza a Maven Projectet, és a Függőségek területen adja hozzá a Spring Webet, az Apache Kafkához készült Springt és a Cloud Stream függőségeit, majd válassza a Java 8-es vagy újabb verzióját.
Fontos
Az oktatóanyag lépéseinek elvégzéséhez a Spring Boot 2.5-ös vagy újabb verziójára van szükség.
Hitelesítő adatok előkészítése
Az Azure Event Hubs támogatja a Microsoft Entra ID használatát az Event Hubs-erőforrásokra irányuló kérések engedélyezéséhez. A Microsoft Entra ID-val azure-beli szerepköralapú hozzáférés-vezérléssel (Azure RBAC) adhat engedélyeket egy biztonsági tagnak, amely lehet felhasználó vagy alkalmazásszolgáltatás-tag.
Ha helyileg szeretné futtatni ezt a mintát a Microsoft Entra-hitelesítéssel, győződjön meg arról, hogy a felhasználói fiókja az Azure Toolkit for IntelliJ, a Visual Studio Code Azure Account beépülő modul vagy az Azure CLI segítségével lett hitelesítve. Győződjön meg arról is, hogy a fiók megfelelő engedélyeket kapott.
Feljegyzés
Jelszó nélküli kapcsolatok használatakor hozzáférést kell adnia a fiókjának az erőforrásokhoz. Az Azure Event Hubsban rendelje hozzá a Azure Event Hubs Data Receiver
szerepkört a Azure Event Hubs Data Sender
jelenleg használt Microsoft Entra-fiókhoz. További információ a hozzáférési szerepkörök megadásáról: Azure-szerepkörök hozzárendelése az Azure Portal használatával és Az Event Hubs-erőforrásokhoz való hozzáférés engedélyezése a Microsoft Entra ID használatával.
Üzenetek küldése és fogadása az Azure Event Hubsból
Az Azure Event Hub használatával üzeneteket küldhet és fogadhat a Spring Cloud Azure használatával.
A Spring Cloud Azure Starter modul telepítéséhez adja hozzá a következő függőségeket a pom.xml fájlhoz:
A Spring Cloud Azure Anyagjegyzéke (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.11.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Feljegyzés
Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a verziót
4.17.0
.spring-cloud-azure-dependencies
Ezt az anyagjegyzéket (BOM) a<dependencyManagement>
pom.xml fájl szakaszában kell konfigurálni. Ez biztosítja, hogy minden Spring Cloud Azure-függőség ugyanazt a verziót használja. A BOM-hez használt verzióról további információt a Spring Cloud Azure melyik verzióját érdemes használni.A Spring Cloud Azure Starter összetevő:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter</artifactId> </dependency>
Az alkalmazás kódolása
Az alábbi lépésekkel konfigurálhatja az alkalmazást üzenetek előállítására és felhasználására az Azure Event Hubs használatával.
Az Event Hub hitelesítő adatainak konfigurálásához adja hozzá az alábbi tulajdonságokat az application.properties fájlhoz .
spring.cloud.stream.kafka.binder.brokers=${AZ_EVENTHUBS_NAMESPACE_NAME}.servicebus.windows.net:9093 spring.cloud.function.definition=consume;supply spring.cloud.stream.bindings.consume-in-0.destination=${AZ_EVENTHUB_NAME} spring.cloud.stream.bindings.consume-in-0.group=$Default spring.cloud.stream.bindings.supply-out-0.destination=${AZ_EVENTHUB_NAME}
Tipp.
Ha verziót
spring-cloud-azure-dependencies:4.3.0
használ, akkor adja hozzá a tulajdonságotspring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources
az értékhezcom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration
.Mivel
4.4.0
ezt a tulajdonságot a rendszer automatikusan hozzáadja, ezért nem kell manuálisan hozzáadni.Az alábbi táblázat a konfiguráció mezőit ismerteti:
Mező Leírás spring.cloud.stream.kafka.binder.brokers
Az Azure Event Hubs-végpontot adja meg. spring.cloud.stream.bindings.consume-in-0.destination
Megadja a bemeneti cél eseményközpontját, amely ebben az oktatóanyagban a korábban létrehozott központ. spring.cloud.stream.bindings.consume-in-0.group
Megadja az Azure Event Hubs fogyasztói csoportját, amelyre beállíthatja $Default
az Azure Event Hubs-példány létrehozásakor létrehozott alapszintű fogyasztói csoportot.spring.cloud.stream.bindings.supply-out-0.destination
Megadja a kimeneti cél eseményközpontját, amely ebben az oktatóanyagban megegyezik a bemeneti célhelyével. Szerkessze az indítási osztályfájlt a következő tartalom megjelenítéséhez.
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.messaging.Message; import org.springframework.messaging.support.GenericMessage; import reactor.core.publisher.Flux; import reactor.core.publisher.Sinks; import java.util.function.Consumer; import java.util.function.Supplier; @SpringBootApplication public class EventHubKafkaBinderApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(EventHubKafkaBinderApplication.class); private static final Sinks.Many<Message<String>> many = Sinks.many().unicast().onBackpressureBuffer(); public static void main(String[] args) { SpringApplication.run(EventHubKafkaBinderApplication.class, args); } @Bean public Supplier<Flux<Message<String>>> supply() { return ()->many.asFlux() .doOnNext(m->LOGGER.info("Manually sending message {}", m)) .doOnError(t->LOGGER.error("Error encountered", t)); } @Bean public Consumer<Message<String>> consume() { return message->LOGGER.info("New message received: '{}'", message.getPayload()); } @Override public void run(String... args) { many.emitNext(new GenericMessage<>("Hello World"), Sinks.EmitFailureHandler.FAIL_FAST); } }
Tipp.
Ebben az oktatóanyagban nincsenek hitelesítési műveletek a konfigurációkban vagy a kódban. Az Azure-szolgáltatásokhoz való csatlakozáshoz azonban hitelesítés szükséges. A hitelesítés befejezéséhez az Azure Identity-et kell használnia. A Spring Cloud Azure
DefaultAzureCredential
az Azure Identity-kódtár használatával segít a hitelesítő adatok kódmódosítások nélküli beszerzésében.DefaultAzureCredential
több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (például helyi és éles környezetekben) környezetspecifikus kód implementálása nélkül. További információ: DefaultAzureCredential.A helyi fejlesztési környezetekben a hitelesítés befejezéséhez használhatja az Azure CLI-t, a Visual Studio Code-ot, a PowerShellt vagy más módszereket. További információ: Azure-hitelesítés Java-fejlesztési környezetekben. A hitelesítés azure-beli üzemeltetési környezetekben való elvégzéséhez javasoljuk a felhasználó által hozzárendelt felügyelt identitás használatát. További információ: Mik az Azure-erőforrások felügyelt identitásai?
Indítsa el az alkalmazást. Az alábbi példához hasonló üzenetek megjelennek az alkalmazásnaplóban:
Kafka version: 3.0.1 Kafka commitId: 62abe01bee039651 Kafka startTimeMs: 1622616433956 New message received: 'Hello World'
Üzembe helyezés az Azure Spring Appsben
Most, hogy a Spring Boot-alkalmazás helyileg fut, ideje éles környezetbe áthelyezni. Az Azure Spring Apps megkönnyíti a Spring Boot-alkalmazások üzembe helyezését az Azure-ban kódmódosítások nélkül. A szolgáltatás kezeli a Spring-alkalmazások infrastruktúráját, hogy a fejlesztők a kódjukra összpontosíthassanak. Az Azure Spring Apps átfogó monitorozási és diagnosztikai, konfigurációkezelési, szolgáltatásfelderítési, CI/CD-integrációs, kék-zöld környezetek és egyebek használatával biztosítja az életciklus-felügyeletet. Az alkalmazás Azure Spring Appsben való üzembe helyezéséről az első alkalmazás üzembe helyezése az Azure Spring Appsben című témakörben olvashat.
Következő lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: