如何在python中使用来自kafka的多个代理的数据?

时间:2019-05-20 09:40:47

标签: python apache-kafka

我使用此命令创建了主题

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic replica

然后我运行此命令

bin/kafka-console-producer.sh --broker-list localhost:9093 localhost:9094 --topic replica

我可以使用此命令在消费者中获取消息

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic replica

但是我无法在python中做同样的事情

在python中,我将其设置在生产者端

producer = KafkaProducer(bootstrap_servers=['localhost:9093', 'localhost:9094'],
                         value_serializer=lambda x:
                         dumps(x).encode('utf-8'))

producer.send('replica', value=data_obj)

在消费者方面,我对此进行设置

from pprint import pprint
def subscriber(topic):

    consumer = KafkaConsumer(
    topic,
     bootstrap_servers=['localhost:9093', 'localhost:9094'],
     auto_offset_reset='earliest',
     enable_auto_commit=True,
     group_id='my-group',
     value_deserializer=lambda x: loads(x.decode('utf-8')))

    for msg in consumer:

        pprint(msg)


if __name__ == '__main__':


   subscriber('replica')

出什么问题了?为什么我无法使用数据?

2 个答案:

答案 0 :(得分:0)

还要添加localhost:9092。这是您的引导服务器,并尝试替换--replication-factor 3这样

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic replica

答案 1 :(得分:0)

就我而言,Kafka-Python 模块不支持多个代理
如果您仅使用代理构建 kafka 集群,您会发现它可以正常工作,但您可以使用 Confluent-Kafka 模块,文档如下:https://docs.confluent.io/platform/current/clients/confluent-kafka-python/