如何为kafka-python添加失败回调kafka.KafkaProducer #send()?

时间:2017-09-24 08:27:58

标签: kafka-python

如果生成的记录失败,我想设置一个回调函数。最初,我只想记录失败的记录。

Confluent Kafka python库提供了一种添加回调的机制:

var configuration = new HostConfiguration
        {
            UrlReservations = new UrlReservations { CreateAutomatically = true }
        };

如何使用kafka-python kafka.KafkaProducer#send()实现类似的行为,而无需使用kafka.SimpleClient#send_produce_request() 使用已弃用的SimpleClient

1 个答案:

答案 0 :(得分:2)

虽然没有记录,但这是相对简单的。无论何时发送消息,您都会立即获得Future。您可以将回调/错误附加到Future

F = producer.send(topic=topic, value=message, key=key)
F.add_callback(callback, message=message, **kwargs_to_pass_to_callback_method)
F.add_errback(erback, message=message, **kwargs_to_pass_to_errback_method)

此处的相关源代码: https://github.com/dpkp/kafka-python/blob/1937ce59b4706b44091bb536a9b810ae657c3225/kafka/future.py#L48-L64

我们真的应该记录下来,我提交https://github.com/dpkp/kafka-python/issues/1256来跟踪它。