我想知道对于导致调用error_cb回调的evens的正确反应是什么。
最初,我们的代码始终从error_cb抛出异常,无论如何。我们在Kubernetes运行我们的东西,所以重新启动消费者/生产者(技术上)并不是什么大不了的事。但是重启次数非常重要,所以我们添加了几个例外,我们只是记录而不退出:
这些是我们经常看到的,并且融合kafka-python似乎能够在没有任何额外帮助的情况下从它们中恢复。
现在我想知道我们是否应该在error_cb中抛出任何异常。我们是否应该开始将error_cb视为日志记录函数,并且只对poll和flush显式抛出的异常做出反应?
答案 0 :(得分:1)
librdkafka将尽最大努力自动从其遇到的任何错误中恢复,因此error_cb
主要是信息性的,并且通常不建议应用程序在发生此类错误时执行任何重大操作。
_MSG_TIMED_OUT
和_TIMED_OUT
- Kafka协议请求超时,通常是由于网络或代理问题。将根据重试配置重试请求,或者相应的API /功能将传播更详细的错误(例如,未提交偏移)。可以安全地忽略此错误。_TRANSPORT
- 代理连接断开或无法建立,这也是一个临时的网络或代理问题,也可能被安全忽略。