Публикация в теме с зарегистрированной схемой в Apache Pulsar - PullRequest
0 голосов
/ 23 октября 2019

Как показано в примере в Документы реестра схемы Pulsar

Producer<User> producer = client.newProducer(JSONSchema.of(User.class))
    .topic(topic)
    .create();
User user = new User(“Tom”, 28);
producer.send(User);

Вы можете зарегистрировать схему как для производителя, так и для потребителя с клиентом Java. Также упоминается, что клиенты на других языках не поддерживают реестр схемы.

Теперь возможно ли отправить сообщение от производителя API Python по теме Pulsar, которое будет использовано потребителем с зарегистрированной схемой? например,

processor = PulsarClient.builder()
            .serviceUrl("pulsar://pulsarhost:6650")
            .build()
            .newConsumer(JSONSchema.of(User.class))
            .topic("sometopic")
            .subscriptionName("somesubscription")
            .subscribe();

Python: импортный пульсар

client = pulsar.Client('pulsar://pulsarhost:6650')

producer = client.create_producer('sometopic')
client.close()

1 Ответ

1 голос
/ 25 октября 2019

В выпуске Pulsar 2.4 вы также можете объявить схему на Python как при публикации, так и при использовании.

Учитывая динамическую природу объекта Python, мы определили класс Record, который вы можете использоватьявно объявить формат схемы. Например:

import pulsar
from pulsar.schema import *

class Example(Record):
    a = String()
    b = Integer()
    c = Boolean()


client = pulsar.Client('pulsar://localhost:6650')
producer = client.create_producer(
                    topic='my-topic',
                    schema=AvroSchema(Example) )

producer.send(Example(a='Hello', b=1))

Дополнительные примеры документов по клиенту Python: https://pulsar.apache.org/docs/en/client-libraries-python/#declaring-and-validating-schema

...