confluent-kafka'消息传递失败'

时间:2016-10-17 15:38:12

标签: python apache-kafka confluent-kafka

我无法使用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()

0 个答案:

没有答案