빠른 시작: Node.js를 사용하여 Azure Event Hubs에서 이벤트 보내기 또는 받기Quickstart: Send events to or receive events from Azure Event Hubs using Node.js

Azure Event Hubs는 초당 수백만 개의 이벤트를 수신하여 처리할 수 있는 빅 데이터 스트리밍 플랫폼이자 이벤트 수집 서비스입니다.Azure Event Hubs is a Big Data streaming platform and event ingestion service that can receive and process millions of events per second. Event Hubs는 분산된 소프트웨어와 디바이스에서 생성된 이벤트, 데이터 또는 원격 분석을 처리하고 저장할 수 있습니다.Event Hubs can process and store events, data, or telemetry produced by distributed software and devices. Event Hub로 전송된 데이터는 실시간 분석 공급자 또는 일괄 처리/스토리지 어댑터를 사용하여 변환하고 저장할 수 있습니다.Data sent to an event hub can be transformed and stored using any real-time analytics provider or batching/storage adapters. Event Hubs에 대한 자세한 개요는 Event Hubs 개요Event Hubs 기능을 참조하세요.For detailed overview of Event Hubs, see Event Hubs overview and Event Hubs features.

이 자습서에서는 이벤트 허브와 이벤트를 주고 받는 Node.js 애플리케이션을 작성하는 방법을 설명합니다.This tutorial describes how to create Node.js applications to send events to or receive events from an event hub.

참고

GitHub에서 샘플로 이 빠른 시작을 다운로드하여 EventHubConnectionStringEventHubName 문자열을 이벤트 허브 값으로 대체하고, 실행합니다.You can download this quickstart as a sample from the GitHub, replace EventHubConnectionString and EventHubName strings with your event hub values, and run it. 또는 이 자습서의 단계를 수행하여 직접 만들 수 있습니다.Alternatively, you can follow the steps in this tutorial to create your own.

필수 조건Prerequisites

이 자습서를 완료하려면 다음 필수 구성 요소가 필요합니다.To complete this tutorial, you need the following prerequisites:

  • 활성 Azure 계정.An active Azure account. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.
  • Node.js 버전 8.x 이상.Node.js version 8.x and higher. https://nodejs.org에서 최신 LTS 버전을 다운로드하세요.Download the latest LTS version from https://nodejs.org.
  • Visual Studio Code(권장) 또는 다른 IDEVisual Studio Code (recommended) or any other IDE
  • Event Hubs 네임스페이스 및 이벤트 허브 만들기Create an Event Hubs namespace and an event hub. 첫 번째 단계에서는 Azure Portal을 사용하여 Event Hubs 형식의 네임스페이스를 만들고 애플리케이션에서 Event Hub와 통신하는 데 필요한 관리 자격 증명을 얻습니다.The first step is to use the Azure portal to create a namespace of type Event Hubs, and obtain the management credentials your application needs to communicate with the event hub. 네임스페이스와 이벤트 허브를 만들려면 이 문서의 절차를 수행한 다음, 이 자습서의 다음 단계를 계속 진행하세요.To create a namespace and an event hub, follow the procedure in this article, then continue with the following steps in this tutorial. 그리고 다음 문서의 지침에 따라 이벤트 허브 네임스페이스에 대한 연결 문자열을 가져옵니다. 연결 문자열 가져오기Then, get the connection string for the event hub namespace by following instructions from the article: Get connection string. 해당 연결 문자열은 이 자습서의 뒷부분에서 사용합니다.You use the connection string later in this tutorial.

npm 패키지 설치Install npm package

Event Hubs용 npm 패키지를 설치하려면 경로에 npm이 있는 명령 프롬프트를 열고, 샘플을 저장하고 이 명령을 실행할 폴더로 디렉터리를 변경합니다.To install the npm package for Event Hubs, open a command prompt that has npm in its path, change the directory to the folder where you want to have your samples and then run this command

npm install @azure/event-hubs

이벤트 프로세서 호스트용 npm 패키지를 설치하려면 아래 명령을 대신 실행합니다.To install the npm package for Event Processor Host, run the below command instead

npm install @azure/event-processor-host

이벤트 보내기Send events

이 섹션에서는 이벤트 허브로 이벤트를 전송하는 Node.js 애플리케이션을 만드는 방법을 보여줍니다.This section shows you how to create a Node.js application that sends events to an event hub.

  1. 선호하는 편집기(예: Visual Studio Code)를 엽니다.Open your favorite editor, such as Visual Studio Code.

  2. send.js라는 파일을 만들고 아래 코드를 이 파일에 붙여넣습니다.Create a file called send.js and paste the below code into it. 문서의 지침에 따라 이벤트 허브 네임스페이스에 대한 연결 문자열을 가져옵니다. 연결 문자열 가져오기Get the connection string for the event hub namespace by following instructions from the article: Get connection string.

    const { EventHubClient } = require("@azure/event-hubs");
    
    // Connection string - primary key of the Event Hubs namespace. 
    // For example: Endpoint=sb://myeventhubns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    const connectionString = "Endpoint=sb://<EVENT HUBS NAMESPACE NAME>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<SHARED ACCESS KEY>";
    
    // Name of the event hub. For example: myeventhub
    const eventHubsName = "<EVENT HUB NAME>";
    
    async function main() {
      const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName);
    
      for (let i = 0; i < 100; i++) {
        const eventData = {body: `Event ${i}`};
        console.log(`Sending message: ${eventData.body}`);
        await client.send(eventData);
      }
    
      await client.close();
    }
    
    main().catch(err => {
      console.log("Error occurred: ", err);
    });
    
  3. 위의 코드에 있는 연결 문자열 및 이벤트 허브 이름을 입력합니다.Enter the connection string and the name of your Event Hub in the above code

  4. 그런 다음, 명령 프롬프트에서 node send.js 명령을 실행하여 이 파일을 실행합니다.Then run the command node send.js in a command prompt to execute this file. 그러면 이벤트 허브에 100개 이벤트가 전송됩니다.This will send 100 events to your Event Hub

축하합니다!Congratulations! 이벤트 허브에 메시지를 보냈습니다.You have now sent events to an event hub.

이벤트 수신Receive events

이 섹션에서는 이벤트 허브에 있는 기본 소비자 그룹의 단일 파티션에서 이벤트를 수신하는 Node.js 애플리케이션을 만드는 방법을 보여줍니다.This section shows you how to create a Node.js application that receives events from a single partition of the default consumer group in an event hub.

  1. 선호하는 편집기(예: Visual Studio Code)를 엽니다.Open your favorite editor, such as Visual Studio Code.
  2. receive.js라는 파일을 만들고 아래 코드를 이 파일에 붙여넣습니다.Create a file called receive.js and paste the below code into it.
    const { EventHubClient, delay } = require("@azure/event-hubs");
    
    // Connection string - primary key of the Event Hubs namespace. 
    // For example: Endpoint=sb://myeventhubns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    const connectionString = "Endpoint=sb://<EVENT HUBS NAMESPACE NAME>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<SHARED ACCESS KEY>";
    
    // Name of the event hub. For example: myeventhub
    const eventHubsName = "<EVENT HUB NAME>";
    
    async function main() {
      const client = EventHubClient.createFromConnectionString(connectionString, eventHubsName);
      const allPartitionIds = await client.getPartitionIds();
      const firstPartitionId = allPartitionIds[0];
    
      const receiveHandler = client.receive(firstPartitionId, eventData => {
        console.log(`Received message: ${eventData.body} from partition ${firstPartitionId}`);
      }, error => {
        console.log('Error when receiving message: ', error)
      });
    
      // Sleep for a while before stopping the receive operation.
      await delay(15000);
      await receiveHandler.stop();
    
      await client.close();
    }
    
    main().catch(err => {
      console.log("Error occurred: ", err);
    });
    
  3. 위의 코드에 있는 연결 문자열 및 이벤트 허브 이름을 입력합니다.Enter the connection string and the name of your Event Hub in the above code.
  4. 그런 다음, 명령 프롬프트에서 node receive.js 명령을 실행하여 이 파일을 실행합니다.Then run the command node receive.js in a command prompt to execute this file. 그러면 이벤트 허브에 있는 기본 소비자 그룹의 파티션 중 하나에서 이벤트가 수신됩니다.This will receive events from one of the partitions of the default consumer group in your Event Hub

축하합니다!Congratulations! 이벤트 허브에서 이벤트를 받았습니다.You have now received events from event hub.

이벤트 프로세서 호스트를 사용하여 이벤트 수신Receive events using Event Processor Host

이 섹션에서는 Node.js 애플리케이션에서 Azure EventProcessorHost를 사용하여 이벤트 허브에서 이벤트를 수신하는 방법을 설명합니다.This section shows how to receive events from an event hub by using Azure EventProcessorHost in a Node.js application. EPH(EventProcessorHost)를 사용하면 이벤트 허브의 소비자 그룹 내 모든 파티션에서 수신기를 만들어 이벤트 허브에서 이벤트를 효율적으로 수신할 수 있습니다.The EventProcessorHost (EPH) helps you efficiently receive events from an event hub by creating receivers across all partitions in the consumer group of an event hub. EPH는 Azure Storage Blob에서 일정한 간격으로 수신된 메시지의 메타데이터에 검사점을 적용합니다.It checkpoints metadata on received messages at regular intervals in an Azure Storage Blob. 이러한 방식이 사용되므로 메시지 수신이 중지된 이후 중지된 시점부터 계속해서 쉽게 메시지를 수신할 수 있습니다.This approach makes it easy to continue receiving messages from where you left off at a later time.

  1. 선호하는 편집기(예: Visual Studio Code)를 엽니다.Open your favorite editor, such as Visual Studio Code.
  2. receiveAll.js라는 파일을 만들고 아래 코드를 이 파일에 붙여넣습니다.Create a file called receiveAll.js and paste the below code into it.
    const { EventProcessorHost, delay } = require("@azure/event-processor-host");
    
    // Connection string - primary key of the Event Hubs namespace. 
    // For example: Endpoint=sb://myeventhubns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    const eventHubConnectionString = "Endpoint=sb://<EVENT HUBS NAMESPACE NAME>.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<SHARED ACCESS KEY>";
    
    // Name of the event hub. For example: myeventhub
    const eventHubName = "<EVENT HUB NAME>";
    
    // Azure Storage connection string
    const storageConnectionString = "DefaultEndpointsProtocol=https;AccountName=<STORAGE ACCOUNT NAME>;AccountKey=<STORAGE ACCOUNT KEY>;EndpointSuffix=core.windows.net";
    
    async function main() {
      const eph = EventProcessorHost.createFromConnectionString(
        "my-eph",
        storageConnectionString,
        "my-storage-container-name",
        eventHubConnectionString,
        {
          eventHubPath: eventHubName,
          onEphError: (error) => {
            console.log("[%s] Error: %O", error);
          }
        }
      );
    
    
      eph.start((context, eventData) => {
        console.log(`Received message: ${eventData.body} from partition ${context.partitionId}`);
      }, error => {
        console.log('Error when receiving message: ', error)
      });
    
      // Sleep for a while before stopping the receive operation.
      await delay(15000);
      await eph.stop();
    }
    
    main().catch(err => {
      console.log("Error occurred: ", err);
    });
    
    
  3. Azure Blob Storage에 대한 연결 문자열과 함께 위의 코드에 있는 연결 문자열 및 이벤트 허브 이름을 입력합니다.Enter the connection string and the name of your Event Hub in the above code along with connection string for an Azure Blob Storage
  4. 그런 다음, 명령 프롬프트에서 node receiveAll.js 명령을 실행하여 이 파일을 실행합니다.Then run the command node receiveAll.js in a command prompt to execute this file.

축하합니다!Congratulations! 이벤트 프로세서 호스트를 사용하여 이벤트 허브에서 메시지를 받았습니다.You have now received events from event hub using Event Processor Host. 이제 이벤트 허브에 있는 기본 소비자 그룹의 모든 파티션에서 이벤트가 수신됩니다.This will receive events from all the partitions of the default consumer group in your Event Hub

다음 단계Next steps

다음 문서를 읽어보세요.Read the following articles: