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 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 Kapcsolati 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 karakterláncát használja az Event Hubs Kafka-hoz való delegált hozzáféréséhez. Ha úgy dönt, hogy hitelesítő adatként közös hozzáférési jogosultságokat használ, akkor a kapcsolati láncot ö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
Fontos
A kapcsolati sztring hitelesítése már nem támogatott a Spring Cloud Azure 6.0.0-s vagy újabb verzióiban. Használjon jelszó nélküli kapcsolatokat.
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 és Azure Event Hubs Data Sender szerepkört a Microsoft Entra-fiókjához, amelyet jelenleg használ. 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>6.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Feljegyzés
Ha Spring Boot 3.0.x-3.4.x verziót használ, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót5.23.0.Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a
spring-cloud-azure-dependenciesverziót4.20.0-re.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 műtárgy:
<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.
Fontos
A kapcsolati sztring hitelesítése már nem támogatott a Spring Cloud Azure 6.0.0-s vagy újabb verzióiban. Használjon jelszó nélküli kapcsolatokat.
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 a(z)
spring-cloud-azure-dependencies:4.3.0verziót használja, akkor adja hozzá a(z)spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sourcestulajdonságot azcom.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfigurationértékkel.Mivel
4.4.0ezt 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.brokersAz Azure Event Hubs-végpontot adja meg. spring.cloud.stream.bindings.consume-in-0.destinationMegadja 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.groupAz Azure Event Hubs fogyasztói csoportját adja meg, amelyet $Defaultértékre állíthat be az alapszintű fogyasztói csoport használatához, amely az Azure Event Hubs-példány létrehozásakor jött létre.spring.cloud.stream.bindings.supply-out-0.destinationMegadja 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
DefaultAzureCredentialaz 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.DefaultAzureCredentialtö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 lokálisan fut, itt az idő, hogy produkciós környezetbe helyezzük át. 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.