Skip to content

Confluent-style HTTP schema registry client #72

Description

@pathosDev

The `InMemorySchemaRegistry` (#6) handles in-process schema management. For multi-service / multi-language deployments the industry standard is Confluent Schema Registry (or compatible — Karapace, Apicurio): a central HTTP service that stores schemas and assigns subject-versioned IDs.

Scope:

  • New file `src/persistence/migration/ConfluentSchemaRegistry.ts` (peer-dep: none — uses fetch).
  • Constructor takes `{ baseUrl, auth?, subjectStrategy? }`.
  • Implements the same `SchemaRegistry` interface as `InMemorySchemaRegistry`.
  • Wire format follows Confluent convention: 5-byte prefix on each payload (`magic-byte=0` + 4-byte big-endian schema ID).
  • `register(manifest, version, registration)` POSTs to `/subjects//versions`.
  • `get(manifest, version)` GETs `/subjects//versions/` with an LRU cache.
  • Schemas registered server-side are stored alongside our local upcaster chain (the registry doesn't care about the codec format — Avro/Protobuf/JSON-Schema all work).

Compatibility:

  • Confluent Registry has its own compat-check modes (`BACKWARD` / `FORWARD` / `FULL` / `NONE`). Map our `'backward'` / `'sample'` modes onto those.

Estimate: 3-4 days.

Out of scope: Avro / Protobuf wire codecs themselves — separate issue (A12).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions