Dear Kafka Users,

We are using kafka 0.8.0 is our application development. To keep message
delivery reliable we want to detect any failure while sending message. To
get high throughput we are using async producer.

As of kafka 0.8.0 async producer implementation, failure to send to message
is logged but not thrown back to producer client.

Snippet from ProducerSendThread -

def tryToHandle(events: Seq[KeyedMessage[K,V]]) {
    val size = events.size
    try {
      debug("Handling " + size + " events")
      if(size > 0)
        handler.handle(events)
    }catch {
      case e: Throwable => error("Error in handling batch of " + size + "
events", e)
    }
  }

Is there any better solution to monitor the async send failure ?

Few of the solution we came up are :
1. Create message buffer in our application logic. Instantiate configurable
pool of  sync producer which reads and send message from buffer. (Sync
producer throws back exception to the caller class)
2. Extend DefaultEventHandler and pass an exception handler callback. On
encountering exception the callback  method -handleException() will be
called notifying application code of any failure.

Please share views, solutions which you have used to tack async send
failure.

Thank you very much.

Best regards
Prashant

Reply via email to