apache / apache/pulsar-client-node

Support for Avro schema on `createProducer`

Offen
#61 1 Kommentar 9 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
triage/week-3 type/feature
Vorherrschende Sprache
C++
Sterne
164
Forks
98
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Would it be possible to add a `schema` property on the config object that initializes `createProducer`? Similar to what Python does, we could initialize [avro-js](https://www.npmjs.com/package/avro-js) with the JSON schema and call `type.getSchema()` to initialize the producer.

Having to disable schema validation on topics isn't ideal for some cases and I think only Java and Python are the clients that have schema support.

A pseudo code would look like:

```js
const client = new Pulsar.Client({
serviceUrl: 'pulsar://localhost:6650',
});

const type = avro.parse({
name: 'Pet',
type: 'record',
fields: [
{name: 'kind', type: {name: 'Kind', type: 'enum', symbols: ['CAT', 'DOG']}},
{name: 'name', type: 'string'}
]
});

const producer = await client.createProducer({
topic: 'persistent://public/default/my-topic',
schema: type.getSchema(),
});
```

I'm not sure if the schema validation happens on the client when creating the producer, even if that is the case `avro-js` has methods to check whether JS objects are valid for a given schema.

On that same line, alternatively, is there any guidelines on how to implement a client? What makes it more difficult for me is that I don't know c++ and I would like to contribute with the JS library (specially Typescript).

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne am createProducer-Einstiegspunkt des Node-Clients und prüfe, wie seine Konfiguration an die Producer-Erstellung übergeben wird. Das Issue schlägt avro-js und type.getSchema() vor; bestimme, wie eine schema-Eigenschaft den Producer initialisieren sollte und wie sich die Schema-Validierung verhalten sollte, und überprüfe anschließend den Avro-Producer-Pfad anhand des bestehenden Client-Verhaltens.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js, typescript
Bereich
backend, distributed-systems
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.