Example #1
0
            event_enqueued = False
            enqueue_retries = 0
            while (not event_enqueued
                   and enqueue_retries < KAFKA_CONFLUENT_RETRY_BUFFER_FULL):
                try:
                    # Produce the message.
                    enqueue_retries += 1
                    kafka_producer.produce(message_topic, message_value,
                                           message_key)
                    event_enqueued = True
                except BufferError as e:
                    if enqueue_retries < KAFKA_CONFLUENT_RETRY_BUFFER_FULL:
                        logging.warning(
                            'Local produce queue full, waiting for '
                            'events delivered.')
                        kafka_producer.poll(0.5)
                    else:
                        logging.error("Failed to enqueue an event to the "
                                      "local kafka producer queue after %d "
                                      "retries.".format(enqueue_retries))
                        raise e

            # If not async, flush the Kafka produce buffer now and block
            # until we are done.
            if not async:
                kafka_producer.flush()

            # Non blocking poll
            kafka_producer.poll(0)

    finally: