빠른 시작: Azure Event Hubs 및 Apache Kafka를 사용하여 데이터 스트리밍

이 빠른 시작에서는 Apache Kafka 프로토콜을 사용하여 Azure Event Hubs에서 데이터를 스트리밍하는 방법을 보여줍니다. 샘플 Kafka 생산자 또는 소비자 앱에서는 코드를 변경하지 않습니다. 클라이언트가 Kafka 엔드포인트를 노출하는 Event Hubs 네임스페이스를 가리키는 데 사용하는 구성을 업데이트하기만 하면 됩니다. 또한 Kafka 클러스터를 직접 빌드하고 사용하지 않습니다. 대신 Kafka 엔드포인트와 함께 Event Hubs 네임스페이스를 사용합니다.

참고 항목

이 샘플은 GitHub에서 사용할 수 있습니다.

필수 조건

이 빠른 시작을 완료하려면 다음 필수 구성 요소가 있어야 합니다.

Azure Event Hubs 네임스페이스 만들기

Event Hubs 네임스페이스를 만들면 네임스페이스에 대한 Kafka 엔드포인트가 자동으로 활성화됩니다. Kafka 프로토콜을 사용하는 애플리케이션에서 이벤트 허브로 이벤트를 스트리밍할 수 있습니다. Azure Portal을 사용하여 이벤트 허브 만들기의 단계별 지침에 따라 Event Hubs 네임스페이스를 만듭니다. 전용 클러스터를 사용하는 경우 전용 클러스터에서 네임스페이스 및 이벤트 허브 만들기를 참조하세요.

참고 항목

Kafka용 Event Hubs는 기본 계층에서 지원되지 않습니다.

Event Hubs에서 Kafka를 사용하여 메시지 보내기 및 받기

  1. 가상 머신에 시스템이 할당한 관리 ID를 사용하도록 설정합니다. VM에서 관리 ID를 구성하는 방법에 대한 자세한 내용은 Azure Portal을 사용하여 VM에서 Azure 리소스에 대한 관리 ID 구성을 참조하세요. Azure 리소스의 관리 ID는 Microsoft Entra ID에서 자동으로 관리되는 ID를 Azure 서비스에 제공합니다. 이 ID를 사용하면 코드에 자격 증명이 없어도 Microsoft Entra 인증을 지원하는 모든 서비스에 인증할 수 있습니다.

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

  2. 사용자가 만든 Event Hubs 네임스페이스의 액세스 제어 페이지를 사용하여 Azure Event Hubs 데이터 소유자 역할을 VM의 관리 ID에 할당합니다. Azure Event Hubs는 Microsoft Entra ID를 사용하여 Event Hubs 리소스에 대한 요청에 권한을 부여하는 것을 지원합니다. Microsoft Entra ID를 사용하면 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 사용자 또는 애플리케이션 서비스 주체일 수 있는 보안 주체에 권한을 부여할 수 있습니다.

    1. Azure Portal에서 Event Hubs 네임스페이스로 이동합니다. 왼쪽 탐색 창의 "액세스 제어(IAM)"로 이동합니다.

    2. + 추가를 선택하고 Add role assignment를 선택합니다.

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

    3. 역할 탭에서 Azure Event Hubs 데이터 소유자를 선택하고 다음 단추를 선택합니다.

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

    4. 구성원 탭의 액세스 할당 섹션에서 관리 ID를 선택합니다.

    5. +멤버 선택 링크를 선택합니다.

    6. 관리 ID 선택 페이지에서 다음 단계를 수행합니다.

      1. VM이 있는 Azure 구독을 선택합니다.

      2. 관리 ID에서 가상 머신을 선택합니다.

      3. 가상 머신의 관리 ID를 선택합니다.

      4. 페이지 아래에서 선택을 선택합니다.

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

    7. 검토 + 할당을 선택합니다.

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

  3. VM을 다시 시작하고 관리 ID를 구성한 VM에 다시 로그인합니다.

  4. Kafka용 Azure Event Hubs 리포지토리를 복제합니다.

  5. azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/consumer으로 이동합니다.

  6. src/main/resources/ 폴더로 전환하고 consumer.config를 엽니다. namespacename를 Event Hubs 네임스페이스의 이름으로 바꿉니다.

    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;
    
  7. pom.xml 파일이 있는 Consumer 폴더로 다시 전환하고 Kafka 클라이언트를 사용하여 이벤트 허브에서 소비자 코드를 실행하고 이벤트를 처리합니다.

    mvn clean package
    mvn exec:java -Dexec.mainClass="TestConsumer"                                    
    
  8. 다른 명령 프롬프트 창을 시작하고 azure-event-hubs-for-kafka/tutorials/oauth/java/managedidentity/producer로 이동합니다.

  9. src/main/resources/ 폴더로 전환하고 producer.config를 엽니다. mynamespace를 Event Hubs 네임스페이스의 이름으로 바꿉니다.

  10. pom.xml 파일이 있는 Producer 폴더로 다시 전환하고 생산자 코드를 실행하고 Event Hubs로 이벤트를 스트리밍합니다.

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

    생산자 창에 전송된 이벤트에 대한 메시지가 표시됩니다. 이제 소비자 앱 창을 확인하여 이벤트 허브에서 수신하는 메시지를 확인합니다.

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

스키마 레지스트리를 사용하여 Kafka에 대한 스키마 유효성 검사

Event Hubs를 사용하여 Kafka 애플리케이션으로 데이터를 스트리밍할 때 Azure 스키마 레지스트리를 사용하여 스키마 유효성 검사를 수행할 수 있습니다. Event Hubs의 Azure 스키마 레지스트리는 스키마를 관리하기 위한 중앙 집중식 리포지토리를 제공하며 신규 또는 기존 Kafka 애플리케이션을 스키마 레지스트리와 원활하게 연결할 수 있습니다.

자세한 내용은 Avro를 사용하여 Apache Kafka 애플리케이션에 대한 스키마 유효성 검사를 참조하세요.

다음 단계

이 문서에서는 프로토콜 클라이언트를 변경하거나 사용자 고유의 클러스터를 실행하지 않고 Event Hubs로 스트리밍하는 방법을 배웠습니다. 자세한 내용은 Azure Event Hubs용 Apache Kafka 개발자 가이드를 참조하세요.