apache / apache/pulsar-client-node
Support for Avro schema on `createProducer`
- 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