For the most part, only SocketExceptions and NotLeaderForPartitionException are recoverable. MessageSizeTooLargeException may be recoverable with a smaller batch size.
Thanks, Jun On Fri, Aug 23, 2013 at 4:09 PM, Jason Rosenberg <j...@squareup.com> wrote: > I'm using the kafka.javaapi.producer.Producer class from a java client. > I'm wondering if it ever makes sense to refresh a producer by stopping it > and creating a new one, for example in response to a downstream IO error > (e.g. a broker got restarted, or a stale socket, etc.). > > Or should it always be safe to rely on the producer's implementation to > manage it's pool of BlockingChannel connections, etc. > > I'm also interested in trying to understand which exceptions indicate a > failed send() request might be retryable (basically anything that doesn't > involve a data-dependent problem, like a malformed message, or a message > too large, etc.). > > Unfortunately, the range of Exceptions that can be thrown by the various > javaapi methods is not yet well documented. It would be nice to have some > notion of whether an exception is the result of a data error, or a > transient downstream connection error, etc. > > Jason >