apache / apache/pulsar-client-node

Add method to get the schema (version) used for serialization of a message

Aperta
#362 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
164
Fork
98
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

There are client libraries for other languages (e.g. java) that support automatic (de)serialization of message data based on a schema (https://pulsar.apache.org/docs/3.1.x/schema-overview/).
The node client does not have this feature yet (https://github.com/apache/pulsar-client-node/issues/242).

In theory it should be possible to deserialize the message data manually, BUT...
Some serialization formats like Avro require to know the exact schema that was used for serialization (https://github.com/mtth/avsc/issues/447). In order to deal with schema evolution the client needs to know it's own compatible schema AND the schema used for serialization.
As far I understand, the automatic (de)serialization feature of Pulsar solves this problem by keeping a schema registry and tagging the messages with the used schema version.
If I understand right, the node client does not provide a method to get the schema used for serialization and not even a method to get the schema version of a message.
Assuming the need for schema evolution, this makes it impossible to deserialize reliably messages written by a java client library using an Avro schema,

I'm new to Pulsar and Avro, so please forgive (and correct) me if my understanding is wrong.

If my understanding is right, I wonder how difficult it would be to add a method to lookup the serialization schema on an message.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia dalla panoramica degli schemi di Pulsar e dall’issue node-client collegata per verificare come le versioni dello schema vengono associate ai messaggi e se il client Node le espone. Definisci l’API necessaria per recuperare lo schema o la versione di serializzazione, quindi conferma che supporti una deserializzazione Avro affidabile durante l’evoluzione dello schema.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript, nodejs
Ambito
distributed-systems
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.