Megosztás a következőn keresztül:


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 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

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-dependencies verziót 5.23.0.

    Ha Spring Boot 2.x-et használ, mindenképpen állítsa be a spring-cloud-azure-dependencies verziót 4.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.

  1. 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.0 verziót használja, akkor adja hozzá a(z) spring.cloud.stream.binders.<kafka-binder-name>.environment.spring.main.sources tulajdonságot az com.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.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 Az 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.destination Megadja a kimeneti cél eseményközpontját, amely ebben az oktatóanyagban megegyezik a bemeneti célhelyével.

    Feljegyzés

    Ha engedélyezi az automatikus témakör-létrehozást, mindenképpen adja hozzá a konfigurációs elemet spring.cloud.stream.kafka.binder.replicationFactor, amelynek értéke legalább 1. További információt a Spring Cloud Stream Kafka Binder referencia-útmutatójában talál.

  2. 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.

    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?

  3. 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.

Következő lépések