我使用此命令创建了主题
./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')
出什么问题了?为什么我无法使用数据?
答案 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/