Digged into kafka code and did some tests. Let me try to answer it by myself. Please correct me if I am wrong. While send() is being called, if brokers are down, send will throw FailedToSendMessageException. Users can catch it and retry.
> From: yu_l...@hotmail.com > To: users@kafka.apache.org > Subject: RE: question about synchronous producer > Date: Fri, 30 May 2014 08:32:44 -0400 > > Thanks for your help, Guozhen. > Assume request.required.acks is set to 1 for the scenario I mentioned. > While send() is being called, brokers are shutdown. What should I expect? > 1 send() will retry 3 times with a 100ms interval and return. > 2 send will not return until the brokers are back online. > > Thanks, > > Libo > > > Date: Thu, 29 May 2014 20:11:48 -0700 > > Subject: Re: question about synchronous producer > > From: wangg...@gmail.com > > To: users@kafka.apache.org > > > > Libo, > > > > That is correct. You may want to increase the retry.backoff.ms in this > > case. In practice, if the brokers are down for too long, then data loss is > > usually inevitable. > > > > Guozhang > > > > > > On Thu, May 29, 2014 at 2:55 PM, Libo Yu <yu_l...@hotmail.com> wrote: > > > > > Hi team, > > > > > > Assume I am using a synchronous producer and it has the following default > > > properties: > > > > > > message.send.max.retries > > > 3 > > > retry.backoff.ms > > > 100 > > > > > > I use java api Producer.send(message) to send a message. > > > While send() is being called, if the brokers are shutdown, what happens? > > > send() will retry 3 times with a 100ms interval and fail silently? > > > If I don't want to lose any message when the brokers are back online, what > > > should I do? Thanks. > > > > > > Libo > > > > > > > > > > > > > > > > > > > > > > -- > > -- Guozhang >