2017-11-10 12 views
0

error_cb 콜백이 호출되는 evens에 대한 적절한 반응이 무엇인지 궁금합니다.confluent-kafka-python 제작자 및 소비자의 error_cb

처음에는 우리 코드가 무엇이든간에 error_cb의 예외를 던졌습니다. 우리는 Kubernetes에서 물건을 사용하고 있으므로 소비자/생산자를 재시동하는 것은 (기술적으로) 큰 문제가 아닙니다. 그러나 다시 시작의 수는 매우 중요했다, 그래서 우리는 종료하지 않고 우리가 로그 예외의 몇 가지를 추가 :

  • KafkaError._MSG_TIMED_OUT (모두 소비자와 생산자)
  • KafkaError._TRANSPORT (소비자)

이들은 우리가 많이 보게되는 것들이며, 합류 - 카프카 - 파이썬은 추가적인 도움없이 복구 할 수있는 것 같습니다.

이제 우리가 예외를 throw하는 것이 옳은지 궁금합니다. error_cb를 로깅 함수로 취급하기 시작해야하며 poll 및 flush에 의해 명시 적으로 throw 된 예외에만 반응해야합니까?

답변

1

librdkafka는 오류가 발생할 때 자동으로 복구하기 위해 최선을 다합니다. 따라서 error_cb은 대부분 정보 용이며 일반적으로 이러한 오류 발생시 과감한 조치를 취하는 것이 좋습니다.

  • _MSG_TIMED_OUT_TIMED_OUT - 카프카 프로토콜 요청은 일반적으로 시간이 초과 네트워크 또는 브로커 문제로 인해. 재시도 구성에 따라 요청이 재 시도되거나 해당 API/기능이 자세한 오류 (예 : 커미트 실패)를 전파합니다. 이 오류는 무시해도됩니다.
  • _TRANSPORT - 브로커 연결이 끊어 지거나 설정할 수 없으므로 일시적인 네트워크 또는 브로커 문제이므로 무시해도 좋습니다.