error_cb in confluent-kafka-python 生产者和消费者

error_cb in confluent-kafka-python producers and consumers

我想知道对导致 error_cb 回调被调用的事件的正确反应是什么。

最初我们的代码总是从 error_cb 中抛出异常,而不管任何事情。我们是 运行 我们在 Kubernetes 中的东西,所以重启 consumer/producer(技术上)没什么大不了的。但是重启的次数非常多,所以我们添加了几个异常,我们只是记录而不退出:

这些是我们经常看到的,而 confluent-kafka-python 似乎能够在没有任何额外帮助的情况下从中恢复。

现在我想知道我们一开始就在 error_cb 中抛出 any 异常是否正确。我们是否应该开始将 error_cb 视为一个日志函数,并且只对 poll 和 flush 明确抛出的异常做出反应?

librdkafka 将尽最大努力从它遇到的任何错误中自动恢复,因此 error_cb 主要是信息性的,通常不建议应用程序在遇到此类错误时做任何激烈的事情。

  • _MSG_TIMED_OUT_TIMED_OUT- Kafka 协议请求超时,通常是由于网络或代理问题。请求将根据重试配置重试,或者相应的 API / 功能将传播更详细的错误(例如,提交偏移量失败)。可以安全地忽略此错误。
  • _TRANSPORT - 代理连接断开或无法建立,这也是一个临时网络或代理问题,可以安全地忽略。