使用 Apache Pulsar 中注册的模式发布到主题

Kar*_*son 2 python-pulsar apache-pulsar

如Pulsar Schema 注册表文档中的示例所示

\n\n
Producer<User> producer = client.newProducer(JSONSchema.of(User.class))\n    .topic(topic)\n    .create();\nUser user = new User(\xe2\x80\x9cTom\xe2\x80\x9d, 28);\nproducer.send(User);\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以使用 Java 客户端注册生产者和消费者的架构。还提到其他语言的客户端不支持模式注册。

\n\n

现在是否可以从 Python API 生产者发送关于 Pulsar 主题的消息,该消息将由具有注册模式的消费者使用?例如

\n\n
processor = PulsarClient.builder()\n            .serviceUrl("pulsar://pulsarhost:6650")\n            .build()\n            .newConsumer(JSONSchema.of(User.class))\n            .topic("sometopic")\n            .subscriptionName("somesubscription")\n            .subscribe();\n
Run Code Online (Sandbox Code Playgroud)\n\n

Python:\n 导入脉冲星

\n\n
client = pulsar.Client(\'pulsar://pulsarhost:6650\')\n\nproducer = client.create_producer(\'sometopic\')\nclient.close()\n
Run Code Online (Sandbox Code Playgroud)\n

Mat*_*rli 5

从 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))
Run Code Online (Sandbox Code Playgroud)

有关 Python 客户端文档的更多示例:https://pulsar.apache.org/docs/en/client-libraries-python/#declaring-and-validating-schema