簡體   English   中英

Confluent Kafka:如何在 confluent-kafka-python 客戶端中指定序列化和分區?

[英]Confluent Kafka: How is serialization and partitioning specified in confluent-kafka-python client?

1) 在 Java 客戶端中,使用 producer.put() 我們可以為整數和字符串添加序列化器。 我們如何為 confluent-kafka-python 客戶端執行此操作? 2) 我們如何序列化 protoBuf 記錄?

在最近的版本中我猜它沒有這樣的配置屬性:“value.serializer”因此我們需要用戶 SerializingProducer 和 value.serializer 值應該是回調

from confluent_kafka import SerializingProducer
import json


def json_serializer(msg, s_obj):
    return json.dumps(msg).encode('utf-8')


conf = {'bootstrap.servers': 'localhost:29092',
        'value.serializer': json_serializer}

producer_client = SerializingProducer(conf)


def producer_json_msg(topic_name, **args):
    producer_client.produce(topic_name, **args)

producer_json_msg('test_two', value={'test': "this is fine"})
producer_client.flush()

對於問題1:在配置中添加key.serializervalue.serializer ,如下所示:

from confluent_kafka import Producer
import socket
conf = {'bootstrap.servers': "host1:9092,host2:9092",
    'client.id': socket.gethostname(),
    'key.serializer': 'key serializer classpath',
    'value.serializer': 'value serializer classpath',
    'default.topic.config': {'acks': 'all'}}
producer = Producer(conf)

對於問題2:實現自己的ProtobufSerializer類,並為其設置{key | value} .serializer。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM