我无法使用confluent-kafka发送消息。我有这个错误:
% Waiting for 18 deliveries
% Message failed delivery: KafkaError{code=INVALID_MSG,val=2,str="....."}
...
% Message failed delivery: KafkaError{code=INVALID_MSG,val=2,str="....."}
我知道这个错误通常是由对协议版本的错误猜测产生的,但是我
按照kafka版本0.10.0.1的配置,我在我的python代码中将api.version.request
设置为true,如下所示:
conf = {'bootstrap.servers': '192.168.150.67:9092', 'api.version.request': True}
producer = Producer(**conf)
我还尝试在代理配置文件' server.properties'中设置它。 我不确定知道在哪里放置这个配置。
我的消费者工作得很好,因为我使用另一个API kafka的制作人发送的消息。
有人可以解释一下为什么它不起作用吗?
import sys
from confluent_kafka import Producer
if __name__ == '__main__':
args = sys.argv
src_fn = 'file.txt'
topic = 'topic'
conf = {'bootstrap.servers': '192.168.150.67:9092', 'api.version.request': True}
producer = Producer(**conf)
with open(src_fn, 'r') as source:
content = source.readlines()
send_message(producer, content, topic)
def send_message(p, content, topic):
for line in content:
try:
p.produce(topic, line.rstrip().encode('utf-8'), callback=delivery_callback)
except BufferError as e:
sys.stderr.write('%% Local producer queue is full ' \
'(%d messages awaiting delivery): try again\n' % len(p))
p.poll(0)
sys.stderr.write('%% Waiting for %d deliveries\n' % len(p))
p.flush()