JavaScript용 Azure Event Hubs 클라이언트 라이브러리 - 버전 5.12.0

Azure Event Hubs 초당 수백만 개의 이벤트를 수집하여 여러 소비자에게 스트리밍할 수 있는 확장성이 뛰어난 게시 구독 서비스입니다. 이렇게 하면 연결된 디바이스 및 애플리케이션에서 생성되는 대량의 데이터를 처리하고 분석할 수 있습니다. Azure Event Hubs 대해 자세히 알아보려면 Event Hubs란?

Azure Event Hubs 클라이언트 라이브러리를 사용하면 Node.js 애플리케이션에서 이벤트를 보내고 받을 수 있습니다.

주요 링크:

참고: 버전 2.1.0 이하를 사용하고 이 패키지의 최신 버전으로 마이그레이션하려는 경우 EventHubs V2에서 EventHubs V5로 이동하는 마이그레이션 가이드를 참조하세요.

v2 및 설명서에 대한 샘플은 여기에서 계속 사용할 수 있습니다.

v2.1.0 | 의 소스 코드v2.1.0용 패키지(npm) | v2.1.0 샘플

시작

패키지 설치

npm을 사용하여 Azure Event Hubs 클라이언트 라이브러리 설치

npm install @azure/event-hubs

현재 지원되는 환경

자세한 내용은 지원 정책을 참조하세요.

필수 구성 요소

TypeScript 구성

TypeScript 사용자는 노드 형식 정의를 설치해야 합니다.

npm install @types/node

또한 tsconfig.json 사용하도록 설정 compilerOptions.allowSyntheticDefaultImports 해야 합니다. 를 사용하도록 설정한 compilerOptions.esModuleInteropallowSyntheticDefaultImports 경우 는 기본적으로 사용하도록 설정됩니다. 자세한 내용은 TypeScript의 컴파일러 옵션 핸드북 을 참조하세요.

JavaScript 번들

브라우저에서 이 클라이언트 라이브러리를 사용하려면 먼저 번들러를 사용해야 합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 번들링 설명서를 참조하세요.

여기서 설명하는 것 외에도 이 라이브러리는 브라우저에서 제대로 작동하기 위해 다음 NodeJS 코어 기본 제공 모듈에 대한 추가 폴리필도 필요합니다.

  • buffer
  • os
  • path
  • process

Webpack과 번들링

Webpack v5를 사용하는 경우 다음 개발 종속성을 설치할 수 있습니다.

  • npm install --save-dev os-browserify path-browserify

그런 다음 다음을 webpack.config.js 추가합니다.

 const path = require("path");
+const webpack = require("webpack");

 module.exports = {
   entry: "./src/index.ts",
@@ -12,8 +13,21 @@ module.exports = {
       },
     ],
   },
+  plugins: [
+    new webpack.ProvidePlugin({
+      process: "process/browser",
+    }),
+    new webpack.ProvidePlugin({
+      Buffer: ["buffer", "Buffer"],
+    }),
+  ],
   resolve: {
     extensions: [".ts", ".js"],
+    fallback: {
+      buffer: require.resolve("buffer/"),
+      os: require.resolve("os-browserify"),
+      path: require.resolve("path-browserify"),
+    },
   },

롤업으로 번들링

롤업 번들러를 사용하는 경우 다음 개발 종속성을 설치합니다.

  • npm install --save-dev @rollup/plugin-commonjs @rollup/plugin-inject @rollup/plugin-node-resolve

그런 다음, rollup.config.js 다음을 포함합니다.

+import nodeResolve from "@rollup/plugin-node-resolve";
+import cjs from "@rollup/plugin-commonjs";
+import shim from "rollup-plugin-shim";
+import inject from "@rollup/plugin-inject";

export default {
  // other configs
  plugins: [
+    shim({
+      fs: `export default {}`,
+      net: `export default {}`,
+      tls: `export default {}`,
+      path: `export default {}`,
+      dns: `export function resolve() { }`,
+    }),
+    nodeResolve({
+      mainFields: ["module", "browser"],
+      preferBuiltins: false,
+    }),
+    cjs(),
+    inject({
+      modules: {
+        Buffer: ["buffer", "Buffer"],
+        process: "process",
+      },
+      exclude: ["./**/package.json"],
+    }),
  ]
};

폴리필 사용에 대한 자세한 내용은 즐겨 찾는 번들러 설명서를 참조하세요.

React Native 지원

브라우저와 마찬가지로 React Native 이 SDK 라이브러리에서 사용하는 일부 JavaScript API를 지원하지 않으므로 폴리필을 제공해야 합니다. 자세한 내용은 Expo에서 메시징 React Native 샘플을 참조하세요.

클라이언트 인증

Event Hubs와의 상호 작용은 EventHubConsumerClient 클래스의 instance 또는 EventHubProducerClient 클래스의 instance 시작합니다. 아래와 같이 이러한 클래스를 인스턴스화하는 다양한 방법을 지원하는 생성자 오버로드가 있습니다.

Event Hubs 네임스페이스에 연결 문자열 사용

생성자 오버로드 중 하나는 폼 Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key; 및 엔터티 이름의 연결 문자열 Event Hub instance 사용합니다. 소비자 그룹을 만들고 Azure Portal 엔터티 이름뿐만 아니라 연결 문자열 가져올 수 있습니다.

const { EventHubProducerClient, EventHubConsumerClient } = require("@azure/event-hubs");

const producerClient = new EventHubProducerClient("my-connection-string", "my-event-hub");
const consumerClient = new EventHubConsumerClient(
  "my-consumer-group",
  "my-connection-string",
  "my-event-hub"
);

이벤트 허브에서 정책에 연결 문자열 사용

또 다른 생성자 오버로드는 Event Hubs 네임스페이스가 아닌 Event Hub instance 직접 정의한 공유 액세스 정책에 해당하는 연결 문자열 사용합니다. 이 연결 문자열 형식Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-event-hub-name입니다. 이전 생성자 오버로드와 연결 문자열 형식의 주요 차이점은 입니다;EntityPath=my-event-hub-name.

const { EventHubProducerClient, EventHubConsumerClient } = require("@azure/event-hubs");

const producerClient = new EventHubProducerClient("my-connection-string-with-entity-path");
const consumerClient = new EventHubConsumerClient(
  "my-consumer-group",
  "my-connection-string-with-entity-path"
);

Event Hubs 네임스페이스 및 Azure ID 사용

이 생성자 오버로드는 TokenCredential 인터페이스를 구현하는 이벤트 허브 instance 및 자격 증명의 호스트 이름 및 엔터티 이름을 사용합니다. 이렇게 하면 Azure Active Directory 보안 주체를 사용하여 인증할 수 있습니다. @azure/ID 패키지에서 사용할 수 있는 인터페이스의 TokenCredential 구현이 있습니다. 호스트 이름은 형식 <yournamespace>.servicebus.windows.net입니다. Azure Active Directory를 사용하는 경우 보안 주체에 Azure Event Hubs 데이터 소유자 역할과 같은 Event Hubs에 대한 액세스를 허용하는 역할이 할당되어야 합니다. Event Hubs에서 Azure Active Directory 권한 부여를 사용하는 방법에 대한 자세한 내용은 관련 설명서를 참조하세요.

const { EventHubProducerClient, EventHubConsumerClient } = require("@azure/event-hubs");

const { DefaultAzureCredential } = require("@azure/identity");
const credential = new DefaultAzureCredential();
const producerClient = new EventHubProducerClient("my-host-name", "my-event-hub", credential);
const consumerClient = new EventHubConsumerClient(
  "my-consumer-group",
  "my-host-name",
  "my-event-hub",
  credential
);

주요 개념

  • Event Hub 생산자는 포함된 디바이스 솔루션, 모바일 디바이스 애플리케이션, 콘솔 또는 다른 디바이스에서 실행되는 게임 타이틀, 일부 클라이언트 또는 서버 기반 비즈니스 솔루션 또는 웹 사이트의 일부로 원격 분석 데이터, 진단 정보, 사용 로그 또는 기타 로그 데이터의 원본입니다.

  • 이벤트 허브 소비자는 이벤트 허브에서 이러한 정보를 선택하고 처리합니다. 처리에는 집계, 복잡한 계산, 필터링이 포함될 수 있습니다. 또한 처리에 원시 또는 변환된 방식으로 정보를 배포하거나 저장하는 작업이 포함될 수도 있습니다. 이벤트 허브 소비자는 Azure Stream Analytics, Apache Spark, Apache Storm 같은 기본 제공 분석 기능이 있는 강력하고 확장성이 뛰어난 플랫폼 인프라 부분인 경우가 많습니다.

  • 파티션은 이벤트 허브에 보관되는 순서가 지정된 이벤트 시퀀스입니다. 파티션은 이벤트 소비자에게 필요한 병렬 처리와 관련된 데이터 조직의 수단입니다. Azure Event Hubs는 각 소비자가 메시지 스트림의 특정 하위 집합 또는 파티션만 읽는 분할된 소비자 패턴을 통해 메시지 스트리밍을 제공합니다. 최신 이벤트가 도착하면 이 시퀀스의 끝에 추가됩니다. 파티션 수는 이벤트 허브를 만들 때 지정되며 변경할 수 없습니다.

  • 소비자 그룹은 전체 이벤트 허브의 보기입니다. 소비자 그룹을 통해 데이터를 사용하는 여러 애플리케이션이 각각 개별 이벤트 스트림 보기를 사용할 수 있으며 고유한 위치에서 고유한 속도로 독립적으로 스트림을 읽을 수 있습니다. 소비자 그룹당 파티션에는 최대 5개의 동시 reader가 있을 수 있습니다. 그러나 지정된 파티션 및 소비자 그룹 페어링에 대해 활성 소비자가 하나만 있는 것이 좋습니다. 각 활성 판독기는 파티션에서 모든 이벤트를 받습니다. 동일한 파티션에 여러 판독기 있는 경우 중복 이벤트를 받게 됩니다.

더 많은 개념과 심층적인 논의는 다음을 참조 하세요. Event Hubs 기능

재시도에 대한 지침

및 는 EventHubConsumerClient SDK가 일시적인 오류를 처리하는 방법을 튜닝할 수 있는 를 설정할 retryOptions 수 있는 위치를 수락 optionsEventHubProducerClient 합니다. 일시적인 오류의 예로는 임시 네트워크 또는 서비스 문제가 있습니다.

이벤트를 사용할 때 다시 시도

SDK가 이벤트를 수신하는 동안 일시적인 오류(예: 임시 네트워크 문제)가 발생하면 에 EventHubConsumerClient전달된 재시도 옵션에 따라 이벤트 수신을 다시 시도합니다. 최대 재시도 시도가 모두 완료되면 함수가 processError 호출됩니다.

다시 시도 설정을 사용하여 네트워크 연결 문제와 같은 임시 문제에 대한 정보를 얼마나 빨리 알 수 있는지 제어할 수 있습니다. 예를 들어 네트워크 문제가 있는 경우 즉시 알아야 하는 경우 및 retryDelayInMs에 대한 maxRetries 값을 낮출 수 있습니다.

함수를 실행한 processError 후 오류가 다시 시도 가능한 경우 클라이언트는 파티션에서 이벤트를 계속 받습니다. 그렇지 않으면 클라이언트는 사용자가 제공한 함수를 processClose 호출합니다. 또한 이 함수는 구독을 중지하거나 클라이언트가 부하 분산의 일부로 애플리케이션의 다른 instance 의해 선택되어 현재 파티션에서 이벤트 읽기를 중지할 때 호출됩니다.

이 함수는 processClose 필요한 경우 검사점 업데이트 기회를 제공합니다. 를 실행한 processClose후 클라이언트(또는 부하 분산의 경우 애플리케이션의 다른 instance 클라이언트)는 사용자가 제공한 함수를 호출하여 동일한 파티션에 대해 마지막으로 업데이트된 processInitialize 검사점에서 이벤트 읽기를 다시 시작합니다.

이벤트 읽기 시도를 중지하려면 메서드에서 반환 subscribe 된 를 subscription 호출 close() 해야 합니다.

예제

다음 섹션에서는 Azure Event Hubs 사용하여 몇 가지 일반적인 작업을 다루는 코드 조각을 제공합니다.

이벤트 허브 검사

많은 이벤트 허브 작업은 특정 파티션 범위 내에서 수행됩니다. 파티션은 이벤트 허브가 소유하므로 생성 시 해당 이름이 할당됩니다. 사용할 수 있는 파티션을 이해하려면 사용 가능한 EventHubProducerClient 두 클라이언트 중 하나를 사용하여 이벤트 허브를 쿼리합니다. 또는 EventHubConsumerClient

아래 예제에서는 를 EventHubProducerClient사용합니다.

const { EventHubProducerClient } = require("@azure/event-hubs");

async function main() {
  const client = new EventHubProducerClient("connectionString", "eventHubName");

  const partitionIds = await client.getPartitionIds();

  await client.close();
}

main();

이벤트 허브에 이벤트 게시

이벤트를 게시하려면 EventHubProducerClient를 만들어야 합니다. 아래 예제에서는 클라이언트를 만드는 한 가지 방법을 보여 주지만 클라이언트를 인스턴스화하는 다른 방법을 알아보려면 클라이언트 인증 섹션을 참조하세요.

특정 파티션에 이벤트를 게시하거나 Event Hubs 서비스가 게시해야 하는 파티션 이벤트를 결정하도록 허용할 수 있습니다. 이벤트 게시를 고가용성으로 사용해야 하거나 파티션 간에 이벤트 데이터를 균등하게 분산해야 하는 경우 자동 라우팅을 사용하는 것이 좋습니다. 아래 예제에서는 자동 라우팅을 활용합니다.

  • createBatchEventDataBatch 사용하여 개체 Create
  • tryAdd 메서드를 사용하여 일괄 처리에 이벤트를 추가합니다. 최대 일괄 처리 크기 제한에 도달하거나 원하는 이벤트 수를 더할 때까지 이 작업을 수행할 수 있습니다. 이 메서드는 최대 일괄 처리 크기에 도달하여 더 이상 이벤트를 일괄 처리에 추가할 수 없음을 나타내기 위해 를 반환 false 합니다.
  • sendBatch 메서드를 사용하여 이벤트 일괄 처리를 보냅니다.

아래 예제에서는 Azure Event Hubs 10개의 이벤트를 보내려고 합니다.

const { EventHubProducerClient } = require("@azure/event-hubs");

async function main() {
  const producerClient = new EventHubProducerClient("connectionString", "eventHubName");

  const eventDataBatch = await producerClient.createBatch();
  let numberOfEventsToSend = 10;

  while (numberOfEventsToSend > 0) {
    let wasAdded = eventDataBatch.tryAdd({ body: "my-event-body" });
    if (!wasAdded) {
      break;
    }
    numberOfEventsToSend--;
  }

  await producerClient.sendBatch(eventDataBatch);
  await producerClient.close();
}

main();

Azure Event Hubs 이벤트를 보내는 프로세스를 제어하기 위해 여러 단계에서 전달할 수 있는 옵션이 있습니다.

  • EventHubProducerClient 생성자는 재시도 횟수와 같은 옵션을 지정하는 데 사용할 수 있는 형식 EventHubClientOptions 의 선택적 매개 변수를 사용합니다.
  • 메서드는 createBatch 생성되는 일괄 처리에서 지원하는 최대 일괄 처리 크기를 speicify하는 데 사용할 수 있는 형식 CreateBatchOptions 의 선택적 매개 변수를 사용합니다.
  • 메서드는 sendBatch 현재 작업을 취소하도록 지정 abortSignal 하는 데 사용할 수 있는 형식 SendBatchOptions 의 선택적 매개 변수를 사용합니다.
  • 특정 파티션에 보내려는 경우 메서드의 sendBatch 오버로드를 사용하면 이벤트를 보낼 파티션의 ID를 전달할 수 있습니다. 위의 이벤트 허브 검사 예제에서는 사용 가능한 파티션 ID를 가져오는 방법을 보여 줍니다.

참고: Azure Stream Analytics로 작업할 때 전송되는 이벤트의 본문도 JSON 개체여야 합니다. 예: body: { "message": "Hello World" }

이벤트 허브에서 이벤트 사용

Event Hub instance 이벤트를 사용하려면 대상으로 지정할 소비자 그룹도 알고 있어야 합니다. 이를 알게 되면 EventHubConsumerClient를 만들 준비가 된 것입니다. 아래 예제에서는 클라이언트를 만드는 한 가지 방법을 보여 주지만 클라이언트를 인스턴스화하는 다른 방법을 알아보려면 클라이언트 인증 섹션을 참조하세요.

subscribe 클라이언트의 메서드에는 생성자와 결합되어 이벤트를 사용하는 여러 가지 방법을 충족할 수 있는 오버로드가 있습니다.

메서드는 subscribe maxBatchSize(대기할 이벤트 수) 및 maxWaitTimeInSeconds(maxBatchSize 이벤트가 도착할 때까지 기다리는 시간)와 같은 옵션을 지정하는 데 사용할 수 있는 형식 SubscriptionOptions 의 선택적 매개 변수를 사용합니다.

단일 프로세스에서 이벤트 사용

먼저 의 EventHubConsumerClientinstance 만든 다음, 메서드를 subscribe() 호출하여 이벤트 사용을 시작합니다.

메서드는 subscribe 콜백을 사용하여 Azure Event Hubs 수신되는 이벤트를 처리합니다. 이벤트 수신을 중지하려면 메서드에서 반환된 개체를 호출 close()subscribe() 수 있습니다.

const { EventHubConsumerClient, earliestEventPosition } = require("@azure/event-hubs");

async function main() {
  const client = new EventHubConsumerClient(
    "my-consumer-group",
    "connectionString",
    "eventHubName"
  );

  // In this sample, we use the position of earliest available event to start from
  // Other common options to configure would be `maxBatchSize` and `maxWaitTimeInSeconds`
  const subscriptionOptions = {
    startPosition: earliestEventPosition
  };

  const subscription = client.subscribe(
    {
      processEvents: async (events, context) => {
        // event processing code goes here
      },
      processError: async (err, context) => {
        // error reporting/handling code here
      }
    },
    subscriptionOptions
  );

  // Wait for a few seconds to receive events before closing
  setTimeout(async () => {
    await subscription.close();
    await client.close();
    console.log(`Exiting sample`);
  }, 3 * 1000);
}

main();

여러 프로세스에서 부하가 분산된 이벤트 사용

Azure Event Hubs 초당 수백만 가지 이벤트를 처리할 수 있습니다. 처리 애플리케이션의 크기를 조정하려면 애플리케이션의 여러 인스턴스를 실행하고 부하를 자체 간에 분산하도록 할 수 있습니다.

먼저 를 사용하는 생성자 오버로드 CheckpointStore중 하나를 사용하여 의 EventHubConsumerClient instance 만든 다음 메서드를 subscribe() 호출하여 이벤트 사용을 시작합니다. 검사점 저장소를 사용하면 소비자 그룹 내의 구독자가 애플리케이션의 여러 인스턴스 간에 처리를 조정할 수 있습니다.

이 예제에서는 필요한 읽기/쓰기를 구현하는 패키지의 @azure/eventhubs-checkpointstore-blob 를 Azure Blob Storage 사용하여 지속성 저장소에 사용합니다BlobCheckpointStore.

메서드는 subscribe 콜백을 사용하여 Azure Event Hubs 수신되는 이벤트를 처리합니다. 이벤트 수신을 중지하려면 메서드에서 반환된 개체를 호출 close()subscribe() 수 있습니다.

const { EventHubConsumerClient } = require("@azure/event-hubs");
const { ContainerClient } = require("@azure/storage-blob");
const { BlobCheckpointStore } = require("@azure/eventhubs-checkpointstore-blob");

const storageAccountConnectionString = "storage-account-connection-string";
const containerName = "container-name";
const eventHubConnectionString = "eventhub-connection-string";
const consumerGroup = "my-consumer-group";
const eventHubName = "eventHubName";

async function main() {
  const blobContainerClient = new ContainerClient(storageAccountConnectionString, containerName);

  if (!(await blobContainerClient.exists())) {
    await blobContainerClient.create();
  }

  const checkpointStore = new BlobCheckpointStore(blobContainerClient);
  const consumerClient = new EventHubConsumerClient(
    consumerGroup,
    eventHubConnectionString,
    eventHubName,
    checkpointStore
  );

  const subscription = consumerClient.subscribe({
    processEvents: async (events, context) => {
      // event processing code goes here
      if (events.length === 0) {
        // If the wait time expires (configured via options in maxWaitTimeInSeconds) Event Hubs
        // will pass you an empty array.
        return;
      }

      // Checkpointing will allow your service to pick up from
      // where it left off when restarting.
      //
      // You'll want to balance how often you checkpoint with the
      // performance of your underlying checkpoint store.
      await context.updateCheckpoint(events[events.length - 1]);
    },
    processError: async (err, context) => {
      // handle any errors that occur during the course of
      // this subscription
      console.log(`Errors in subscription to partition ${context.partitionId}: ${err}`);
    }
  });

  // Wait for a few seconds to receive events before closing
  await new Promise((resolve) => setTimeout(resolve, 10 * 1000));

  await subscription.close();
  await consumerClient.close();
  console.log(`Exiting sample`);
}

main();

자세한 내용은 애플리케이션의 여러 인스턴스에서 파티션 부하 분산 을 참조하세요.

단일 파티션에서 이벤트 사용

먼저 의 EventHubConsumerClientinstance 만든 다음, 메서드를 subscribe() 호출하여 이벤트 사용을 시작합니다. 대상으로 지정하려는 파티션의 ID를 메서드에 subscribe() 전달하여 해당 파티션에서만 사용합니다.

아래 예제에서는 첫 번째 파티션을 사용합니다.

메서드는 subscribe 콜백을 사용하여 Azure Event Hubs 수신되는 이벤트를 처리합니다. 이벤트 수신을 중지하려면 메서드에서 반환된 개체를 호출 close()subscribe() 수 있습니다.

const { EventHubConsumerClient, earliestEventPosition } = require("@azure/event-hubs");

async function main() {
  const client = new EventHubConsumerClient(
    "my-consumer-group",
    "connectionString",
    "eventHubName"
  );
  const partitionIds = await client.getPartitionIds();

  // In this sample, we use the position of earliest available event to start from
  // Other common options to configure would be `maxBatchSize` and `maxWaitTimeInSeconds`
  const subscriptionOptions = {
    startPosition: earliestEventPosition
  };

  const subscription = client.subscribe(
    partitionIds[0],
    {
      processEvents: async (events, context) => {
        // event processing code goes here
      },
      processError: async (err, context) => {
        // error reporting/handling code here
      }
    },
    subscriptionOptions
  );

  // Wait for a few seconds to receive events before closing
  setTimeout(async () => {
    await subscription.close();
    await client.close();
    console.log(`Exiting sample`);
  }, 3 * 1000);
}

main();

EventHubConsumerClient를 사용하여 IotHub 작업

를 사용하여 EventHubConsumerClient IotHub에서도 작업할 수 있습니다. 이는 연결된 EventHub에서 IotHub의 원격 분석 데이터를 수신하는 데 유용합니다. 연결된 연결 문자열 보내기 클레임이 없으므로 이벤트를 보낼 수 없습니다.

  • event Hub 호환 엔드포인트에 대한 연결 문자열 있어야 합니다(예: "Endpoint=sb://my-iothub-namespace-[uid].servicebus.windows.net/; SharedAccessKeyName=my-SA-name; SharedAccessKey=my-SA-key; EntityPath=my-iot-hub-name")
const { EventHubConsumerClient } = require("@azure/event-hubs");

async function main() {
  const client = new EventHubConsumerClient(
    "my-consumer-group",
    "Endpoint=sb://my-iothub-namespace-[uid].servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-iot-hub-name"
  );
  await client.getEventHubProperties();
  // retrieve partitionIds from client.getEventHubProperties() or client.getPartitionIds()
  const partitionId = "0";
  await client.getPartitionProperties(partitionId);

  await client.close();
}

main();

문제 해결

AMQP 종속성

Event Hubs 라이브러리는 AMQP 프로토콜을 통해 연결을 관리하고 이벤트를 보내고 받기 위한 rhea-promise 라이브러리에 따라 달라집니다.

로깅

로깅을 AZURE_LOG_LEVEL 사용하도록 환경 변수를 설정할 수 있습니다.stderr

export AZURE_LOG_LEVEL=verbose

로그를 사용하는 방법에 대한 자세한 내용은 @azure/logger package docs를 참조하세요.

또는 이 라이브러리를 DEBUG 사용할 때 환경 변수를 설정하여 로그를 가져올 수 있습니다. 종속성에서 로그를 내보내려는 경우에도 유용할 수 있습니다 rhea-promiserhea .

참고: AZURE_LOG_LEVEL 설정되면 DEBUG보다 우선합니다. AZURE_LOG_LEVEL 지정하거나 setLogLevel을 호출할 때 DEBUG를 통해 라이브러리를 지정 azure 하지 마세요.

  • Event Hubs SDK에서 정보 수준 디버그 로그만 가져옵니다.
export DEBUG=azure:*:info
  • Event Hubs SDK 및 프로토콜 수준 라이브러리에서 디버그 로그를 가져옵니다.
export DEBUG=azure*,rhea*
  • 원시 이벤트 데이터(많은 양의 콘솔/디스크 공간을 사용) 를 보는 데 관심이 없는 경우 다음과 같이 환경 변수를 DEBUG 설정할 수 있습니다.
export DEBUG=azure*,rhea*,-rhea:raw,-rhea:message
  • 오류 및 SDK 경고에만 관심이 있는 경우 다음과 같이 환경 변수를 DEBUG 설정할 수 있습니다.
export DEBUG=azure:*:(error|warning),rhea-promise:error,rhea:events,rhea:frames,rhea:io,rhea:flow

다음 단계

추가 샘플 코드

이 라이브러리를 사용하여 Event Hubs에 이벤트를 보내고 받는 방법에 대한 자세한 예제는 샘플 디렉터리를 참조하세요.

참여

이 라이브러리에 기여하려면 기여 가이드 를 참조하여 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.

Impressions