Isn’t the producer part of the application? The metadata is stored in
memory. If the application rebooted (process restarted), all the metadata
will be gone.

Jiangjie (Becket) Qin

On 5/13/15, 9:54 AM, "Mohit Gupta" <success.mohit.gu...@gmail.com> wrote:

>I meant the producer. ( i.e. application using the producer api to push
>messages into kafka ) .
>
>On Wed, May 13, 2015 at 10:20 PM, Mayuresh Gharat <
>gharatmayures...@gmail.com> wrote:
>
>> By application rebooting, do you mean you bounce the brokers?
>>
>> Thanks,
>>
>> Mayuresh
>>
>> On Wed, May 13, 2015 at 4:06 AM, Mohit Gupta <
>> success.mohit.gu...@gmail.com>
>> wrote:
>>
>> > Thanks Jiangjie. This is helpful.
>> >
>> > Adding to what you have mentioned, I can think of one more scenario
>>which
>> > may not be very rare.
>> > Say, the application is rebooted and the Kafka brokers registered in
>>the
>> > producer are not reachable ( could be due to network issues or those
>> > brokers are actually down ).  Since, no metadata is available the send
>> will
>> > block. Right?
>> >
>> > On Wed, May 13, 2015 at 10:51 AM, Jiangjie Qin
>><j...@linkedin.com.invalid
>> >
>> > wrote:
>> >
>> > >
>> > > Application will not block on each metadata refresh or metadata is
>> > > expired.
>> > > Application will only be blocked when
>> > > 1. It sends the first message to a topic (only for that single
>> message),
>> > or
>> > > 2. The topic has been deleted from broker thus refreshed metadata
>>loses
>> > > the topic info (which is pretty rare).
>> > >
>> > > So I think the async here might mean a little bit different. It
>>means
>> > when
>> > > you send first message to a topic, you wait till you know the topic
>> > exist,
>> > > after that point it is async.
>> > > It is very low chance that your application will block on send. If
>>it
>> is
>> > > then something probably really went wrong and needs immediate
>> attention.
>> > >
>> > > Thanks.
>> > >
>> > > Jiangjie (Becket) Qin
>> > >
>> > > On 5/12/15, 5:08 PM, "Rendy Bambang Junior"
>><rendy.b.jun...@gmail.com>
>> > > wrote:
>> > >
>> > > >Thank you for the clarification.
>> > > >
>> > > >I think I agree with Mohit. Sometime blocking on logging is not
>> > acceptable
>> > > >by nature of application who uses kafka.
>> > > >
>> > > >Yes it is not blocking when metadata is still available. But
>> application
>> > > >will be blocked once metada is expired.
>> > > >
>> > > >It might be handled by application, by implementing async call
>>when do
>> > > >send() and manage buffer and async timeout internally, but it makes
>> > async
>> > > >feature in kafka producer has less meaning.
>> > > >
>> > > >Sorry if my understanding is incorrect.
>> > > >
>> > > >Rendy
>> > > >On May 13, 2015 6:59 AM, "Jiangjie Qin" <j...@linkedin.com.invalid>
>> > > wrote:
>> > > >
>> > > >> Send() will only block if the metadata is *not available* for the
>> > topic.
>> > > >> It won't block if metadata there is stale. The metadata refresh
>>is
>> > async
>> > > >> to send(). However, if you send the message to a topic for the
>>first
>> > > >>time,
>> > > >> send() will trigger a metadata refresh and block until it has
>> metadata
>> > > >>for
>> > > >> that topic.
>> > > >>
>> > > >> Jiangjie (Becket) Qin
>> > > >>
>> > > >> On 5/12/15, 12:58 PM, "Magnus Edenhill" <mag...@edenhill.se>
>>wrote:
>> > > >>
>> > > >> >I completely agree with Mohit, an application should not have to
>> know
>> > > >>or
>> > > >> >care about
>> > > >> >producer implementation internals.
>> > > >> >Given a message and its delivery constraints (produce retry
>>count
>> and
>> > > >> >timeout) the producer
>> > > >> >should hide any temporal failures until the message is
>>succesfully
>> > > >> >delivered, a permanent
>> > > >> >error is encountered or the constraints are hit.
>> > > >> >This should also include internal start up sequencing, such as
>> > metadata
>> > > >> >retrieval.
>> > > >> >
>> > > >> >
>> > > >> >
>> > > >> >2015-05-12 21:22 GMT+02:00 Mohit Gupta <
>> > success.mohit.gu...@gmail.com
>> > > >:
>> > > >> >
>> > > >> >> I could not follow the reasoning behind blocking the send
>>method
>> if
>> > > >>the
>> > > >> >> metadata is not up-to-date. Though, I see that it as per
>>design,
>> it
>> > > >> >> requires the metadata to batch the message into appropriate
>> > > >> >>topicPartition
>> > > >> >> queue. Also, if the metadata could not be updated in the
>> specified
>> > > >> >> interval, it throws an exception and the message is not
>>queued to
>> > be
>> > > >> >> retried once the brokers are up.
>> > > >> >>
>> > > >> >> Should it not be that messages are buffered in another queue (
>> > up-to
>> > > >>a
>> > > >> >> limit ) if the brokers are down and retried later?
>> > > >> >> Is it not a general use case to require producer to be
>> asynchronous
>> > > >>in
>> > > >> >>all
>> > > >> >> the scenarios?
>> > > >> >>
>> > > >> >>
>> > > >> >> On Tue, May 12, 2015 at 10:54 PM, Mayuresh Gharat <
>> > > >> >> gharatmayures...@gmail.com> wrote:
>> > > >> >>
>> > > >> >> > The way it works I suppose is that, the producer will do
>> > > >> >>fetchMetadata,
>> > > >> >> if
>> > > >> >> > the last fetched metadata is stale (the refresh interval has
>> > > >>expired)
>> > > >> >>or
>> > > >> >> if
>> > > >> >> > it is not able to send data to a particular broker in its
>> current
>> > > >> >> metadata
>> > > >> >> > (This might happen in some cases like if the leader moves).
>> > > >> >> >
>> > > >> >> > It cannot produce without having the right metadata.
>> > > >> >> >
>> > > >> >> > Thanks,
>> > > >> >> >
>> > > >> >> > Mayuresh
>> > > >> >> >
>> > > >> >> > On Tue, May 12, 2015 at 10:09 AM, Jiangjie Qin
>> > > >> >><j...@linkedin.com.invalid
>> > > >> >> >
>> > > >> >> > wrote:
>> > > >> >> >
>> > > >> >> > > That¹s right. Send() will first try to get metadata of a
>> topic,
>> > > >>that
>> > > >> >> is a
>> > > >> >> > > blocking operation.
>> > > >> >> > >
>> > > >> >> > > On 5/12/15, 2:48 AM, "Rendy Bambang Junior"
>> > > >> >><rendy.b.jun...@gmail.com>
>> > > >> >> > > wrote:
>> > > >> >> > >
>> > > >> >> > > >Hi, sorry if my understanding is incorrect.
>> > > >> >> > > >
>> > > >> >> > > >I am integrating kafka producer with application, when i
>>try
>> > to
>> > > >> >> shutdown
>> > > >> >> > > >all kafka broker (preparing for prod env) I notice that
>> 'send'
>> > > >> >>method
>> > > >> >> is
>> > > >> >> > > >blocking.
>> > > >> >> > > >
>> > > >> >> > > >Is new producer fetch metadata not async?
>> > > >> >> > > >
>> > > >> >> > > >Rendy
>> > > >> >> > >
>> > > >> >> > >
>> > > >> >> >
>> > > >> >> >
>> > > >> >> > --
>> > > >> >> > -Regards,
>> > > >> >> > Mayuresh R. Gharat
>> > > >> >> > (862) 250-7125
>> > > >> >> >
>> > > >> >>
>> > > >> >>
>> > > >> >>
>> > > >> >> --
>> > > >> >> Best Regards,
>> > > >> >>
>> > > >> >> Mohit Gupta
>> > > >> >>
>> > > >>
>> > > >>
>> > >
>> > >
>> >
>> >
>> > --
>> > Best Regards,
>> >
>> > Mohit Gupta
>> >
>>
>>
>>
>> --
>> -Regards,
>> Mayuresh R. Gharat
>> (862) 250-7125
>>
>
>
>
>-- 
>Best Regards,
>
>Mohit Gupta

Reply via email to