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-hubs
EventData
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으로 문의하세요.
이 라이브러리에 기여하려면 기여 가이드 를 참조하여 코드를 빌드하고 테스트하는 방법에 대해 자세히 알아보세요.