1

I'm trying to use confluent_kafka to consume some messages from a broker. I'm getting an exception which I fully understand. I'm trying to get earliest offsets for a topic/partition which doesn't exist.

I'm trying to handle this exception properly and I see that when I print out the exception I get

cimpl.KafkaException: KafkaError{code=_UNKNOWN_PARTITION,val=-190,str="Failed to get offsets: Local: Unknown partition"}

I'd like to put a nice try/except block around this and handle the UNKNOWN_PARTITION error code but I can't find any constants that match the _UNKNOWN_PARTITION value (-190). I don't want to hard code the -190 into my code so does anyone know how I should do this?

try:
    earliest_offsets = self._kafka.offsets_for_times( topic_partitions )
except KafkaException as exception:
    kafka_error = exception.args[ 0 ]
    if kafka_error.code() == <SOME-CONSTANT-GOES-HERE>:
        print( "Kafka Topic/Partition Does Not Exist!!" )
ScaryAardvark
  • 2,855
  • 4
  • 30
  • 43

1 Answers1

1

Ah. It turns out the constants I require are on the KafkaError class itself, i.e.

try:
    earliest_offsets = self._kafka.offsets_for_times( topic_partitions )
except KafkaException as exception:
    kafka_error = exception.args[ 0 ]
    if kafka_error.code() == KafkaError._UNKNOWN_PARTITION:
        print( "Kafka Topic/Partition Does Not Exist!!" )
ScaryAardvark
  • 2,855
  • 4
  • 30
  • 43