Avvio rapido: Trasmettere i dati con Hub eventi di Azure e Apache Kafka

Questo avvio rapido mostra come trasmettere i dati in e da Hub eventi di Azure usando il protocollo Apache Kafka. Non verrà cambiato alcun codice nelle app campione Kafka produttore o consumatore. Sono appena state cambiate le configurazioni che il client usa per puntare a uno spazio dei nomi di Hub eventi, che espone un endpoint Kafka. Inoltre, non si compila e usa un cluster Kafka in autonomia. Si usa invece lo spazio dei nomi di Hub eventi con l'endpoint Kafka.

Nota

Questo esempio è disponibile su GitHub

Prerequisiti

Per completare questa guida introduttiva, accertarsi di soddisfare i requisiti seguenti:

Creare uno spazio dei nomi di Hub eventi di Azure

Quando si crea uno spazio dei nomi di Hub eventi, l'endpoint Kafka per lo spazio dei nomi viene abilitato automaticamente. È ora possibile trasmettere gli eventi dalle applicazioni che usano il protocollo Kafka in Hub eventi. Seguire le istruzioni dettagliate illustrate in Creare un Hub eventi usando il portale di Azure per creare uno spazio dei nomi di Hub eventi. Se è in uso un cluster dedicato, vedere Creare uno spazio dei nomi e un Hub eventi in un cluster dedicato.

Nota

Hub eventi per Kafka non è supportato nel livello Basic.

Inviare e ricevere messaggi con Kafka in Hub eventi

  1. Abilitare l'identità gestita assegnata dal sistema per la macchina virtuale. Per informazioni su come configurare un'identità gestita su una VM, vedere Configurare identità gestite per risorse di Azure in una macchina virtuale tramite il portale di Azure. Le identità gestite per le risorse di Azure offrono servizi di Azure con un'identità gestita automaticamente in Microsoft Entra ID. È possibile usare questa identità per l'autenticazione in qualsiasi servizio che supporta l'autenticazione di Microsoft Entra senza dover immettere le credenziali nel codice.

    Screenshot of the Identity tab of a virtual machine page in the Azure portal.

  2. Usando la pagina Controllo di accesso dello spazio dei nomi di Hub eventi creato, assegnare il ruolo Proprietario dei dati di Hub eventi di Azure all'identità gestita della VM. Hub eventi di Azure supporta l'utilizzo di Microsoft Entra ID per autorizzare le richieste alle risorse di Hub eventi. Con Microsoft Entra ID, è possibile usare il controllo degli accessi in base al ruolo di Azure per concedere autorizzazioni a un'entità di sicurezza, che può essere un utente o un'entità servizio dell'applicazione.

    1. Passare allo spazio dei nomi degli hub eventi nel portale di Azure. Passare a "Controllo di accesso (IAM)" nella struttura di navigazione di sinistra.

    2. Selezionare + Aggiungi, quindi Add role assignment.

      Screenshot of the Access Control page of an Event Hubs namespace.

    3. Nella scheda Ruolo, selezionare Proprietario dei dati di Hub eventi di Azure e selezionare il pulsante Avanti.

      Screenshot showing the selection of the Azure Event Hubs Data Owner role.

    4. Alla scheda Membri, selezionare Identità gestita nella sezione Assegnare accesso a.

    5. Selezionare il link +Seleziona membri.

    6. Alla pagina Selezionare identità gestite, seguire questi passaggi:

      1. Selezionare la sottoscrizione di Azure che include la VM.

      2. Per Identità gestita, selezionare Macchina virtuale

      3. Selezionare l'identità gestita della macchina virtuale.

      4. Selezionare Seleziona nella parte inferiore della pagina.

        Screenshot showing the Add role assignment -> Select managed identities page.

    7. Selezionare Rivedi + Assegna.

      Screenshot showing the Add role assignment page with role assigned to VM's managed identity.

  3. Riavviare la macchina virtuale e accedere nuovamente alla VM per cui è stata configurata l'identità gestita.

  4. Clonare gli Hub eventi di Azure per il repository di Kafka.

  5. Accedere a azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/consumer.

  6. Passare alla cartella src/main/resources/ e aprire consumer.config. Sostituire namespacename con il nome dello spazio dei nomi di Hub eventi.

    bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
    security.protocol=SASL_SSL
    sasl.mechanism=OAUTHBEARER
    sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
    sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler;
    

    Nota

    Tutti gli esempi di OAuth per Hub eventi per Kafka sono disponibili qui.

  7. Tornare alla cartella Consumer in cui si trova il file pom.xml ed eseguire il codice consumer gli eventi del processo dall'Hub eventi usando i client Kafka:

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestConsumer"                                    
    
  8. Avviare un'altra finestra del prompt dei comandi e passare a azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/producer.

  9. Passare alla cartella src/main/resources/ e aprire producer.config. Sostituire mynamespace con il nome dello spazio dei nomi di Hub eventi.

  10. Tornare alla cartella Producer, dove si trova il file pom.xml, eseguire il codice producer e tramettere eventi in Hub eventi:

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestProducer"                                    
    

    Si dovrebbero vedere i messaggi sugli eventi inviati nella finestra producer. Ora, controllare la finestra dell'app consumer per vedere i messaggi che riceve dall'Hub eventi.

    Screenshot showing the Producer and Consumer app windows showing the events.

Convalida schema per Kafka con registro schemi

È possibile usare registro schemi di Azure per eseguire una convalida schema quando si trasmettono dati con le applicazioni Kafka usando Hub eventi. Registro schemi di Azure di Hub eventi fornisce un repository centralizzato per la gestione degli schemi ed è possibile connettere senza problemi le applicazioni Kafka nuove o esistenti con registro schemi.

Per scoprire di più, vedere Convalidare schemi per le applicazioni Apache Kafka usando Avro.

Passaggi successivi

In questo articolo è stato illustrato come eseguire lo streaming in un'istanza di Hub eventi senza modificare i client di protocollo o eseguire cluster personalizzati. Per altre informazioni, vedere Guida per sviluppatori Apache Kafka per Hub eventi di Azure.