다음을 통해 공유


JavaScript용 Azure 스키마 레지스트리 Avro Serializer 클라이언트 라이브러리 - 버전 1.0.0

Azure Schema Registry는 스키마 스토리지, 버전 관리 및 관리를 제공하는 Azure Event Hubs 호스팅되는 스키마 리포지토리 서비스입니다. 이 패키지는 Avro 직렬화된 데이터를 포함하는 페이로드를 직렬화하고 역직렬화할 수 있는 Avro 직렬 변환기를 제공합니다.

주요 링크:

시작

필수 구성 요소

@azure/schema-registry-avro 패키지를 설치합니다.

을 사용하여 JavaScript용 Azure Text Analytics 클라이언트 라이브러리를 npm설치합니다.

npm install @azure/schema-registry-avro

주요 개념

AvroSerializer

스키마 ID가 포함된 콘텐츠 형식 필드가 있는 메시지에 래핑된 Avro Binary Encoding에서 직렬화하고 역직렬화하는 API를 제공합니다. @azure/schema-registry 패키지에서 를 사용하여 SchemaRegistryClient 스키마 정의에서 스키마 ID를 얻거나 그 반대의 경우도 마찬가지입니다. 제공된 API에는 가능한 경우 스키마 레지스트리 서비스를 호출하지 않도록 내부 캐시가 있습니다.

메시지

기본적으로 serializer는 다음과 같이 구조화된 메시지를 만듭니다.

  • data: Avro 이진 인코딩의 데이터를 포함하는 바이트 배열입니다. Avro 개체 컨테이너 파일이 아닙니다. 후자에는 스키마가 포함되어 있으며 이 직렬 변환기를 사용하여 스키마를 메시지 페이로드에서 스키마 레지스트리로 이동하는 목적이 무효화됩니다.

  • contentType: 파트가 avro/binary 이 메시지에 Avro 직렬화된 페이로드가 있음을 알리는 다음 형식 avro/binary+<Schema ID> 의 문자열이며<Schema Id>, 파트는 이 페이로드를 직렬화하는 데 사용되는 스키마 레지스트리 서비스에 할당된 스키마 ID입니다.

모든 메시징 서비스가 동일한 메시지 구조를 지원하는 것은 아닙니다. 이러한 서비스와의 통합을 사용하도록 설정하기 위해 직렬 변환기는 해당 메시지 생산자 및 소비자와 함께 생성자의 옵션을 설정 messageAdapter 하여 사용자 지정 메시지 구조에 대해 작동할 수 있습니다. Azure 메시징 클라이언트 라이브러리는 메시지 유형에 대한 기본 어댑터를 내보냅니다.

의 직렬화 및 역직렬화 @azure/event-hubsEventData

const { DefaultAzureCredential } = require("@azure/identity");
import { createEventDataAdapter } from "@azure/event-hubs";
const { SchemaRegistryClient } = require("@azure/schema-registry");
const { AvroSerializer } = require("@azure/schema-registry-avro");

const client = new SchemaRegistryClient(
  "<fully qualified namespace>",
  new DefaultAzureCredential()
);
const serializer = new AvroSerializer(client, {
  groupName: "<group>",
  messageAdapter: createEventDataAdapter(),
});

// Example Avro schema
const schema = JSON.stringify({
  type: "record",
  name: "Rating",
  namespace: "my.example",
  fields: [{ name: "score", type: "int" }],
});

// Example value that matches the Avro schema above
const value = { score: 42 };

// Serialize value to a message
const message = await serializer.serialize(value, schema);

// Deserialize a message to value
const deserializedValue = await serializer.deserialize(message);

문제 해결

Avro 직렬 변환기는 스키마를 등록하거나 쿼리하는 데 필요한 경우 스키마 레지스트리 서비스와 통신하며 이러한 서비스 호출 은 RestError를 throw할 수 있습니다. 또한 직렬화 또는 역직렬화에 실패하면 형식 Error 의 오류가 throw됩니다. 속성에는 cause Avro 구현 라이브러리에서 throw된 기본 오류가 포함됩니다.

로깅

로깅을 사용하도록 설정하면 실패에 대한 유용한 정보를 파악하는 데 도움이 될 수 있습니다. HTTP 요청 및 응답 로그를 보려면 AZURE_LOG_LEVEL 환경 변수를 info로 설정합니다. 또는 @azure/logger에서 setLogLevel을 호출하여 런타임에 로깅을 사용하도록 설정할 수 있습니다.

const { setLogLevel } = require("@azure/logger");

setLogLevel("info");

다음 단계

이 라이브러리를 사용하는 방법에 대한 자세한 예제는 샘플 디렉터리를 참조하세요.

참여

이 프로젝트에 대한 기여와 제안을 환영합니다. 대부분의 경우 기여하려면 권한을 부여하며 실제로 기여를 사용할 권한을 당사에 부여한다고 선언하는 CLA(기여자 라이선스 계약)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com 을 참조하세요.

끌어오기 요청을 제출하면 CLA-bot은 CLA를 제공하고 PR을 적절하게 데코레이팅해야 하는지 여부를 자동으로 결정합니다(예: 레이블, 설명). 봇에서 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 CLA를 사용하여 모든 리포지토리에서 한 번만 수행하면 됩니다.

이 프로젝트에는 Microsoft Open Source Code of Conduct(Microsoft 오픈 소스 준수 사항)가 적용됩니다. 자세한 내용은 Code of Conduct FAQ(규정 FAQ)를 참조하세요. 또는 추가 질문이나 의견은 opencode@microsoft.com으로 문의하세요.

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

Impressions