One system I am working on we have something similar however we are
creating topics like how the TopicCommand does but different.  We keep
those operations persisted in a meta store so consumers that have to-do
something know that everything is all ready for them (as often it is not
just Kafka) for them to-do "their thing".  In our case we are spinning up
consumers within our Mesos slaves... we don't want that to happen unless
there is a topic present and is showing up in our monitoring first (test
messages going in first).

Think of it like the producer having to request permission for a new topic
to be created and blocking waiting for that to happen (first one creates
the topic and the other request ack back right away as topic is created).
 There may be good reason for that topic to not be created i.e. half your
hardware just "conked" out and Mesos is rebalancing all non priority
services killing them to start up more priority services... you also have
to make sure then that no new low priority services are created.

I think a lot of this comes down to different domain specific build systems
and implementing these behaviors within them, once integration hooks are
understood (and easily available). Maybe we need to make the command tools
more plug-able?  Without trying to become "plug-able happy" we could
broaden the convo looking at command tools as a whole.  There is thread
going for that lets lump this ticket into it? At least so it can solved as
part of a larger piece?  Or maybe just make it more like an API and the
project ships with a shell wrapper for the API?  Not far off from that now.

There was also a patch for a different restart mechanism
https://issues.apache.org/jira/browse/KAFKA-1300  that looked interesting
that would be part of it too I would think? So folks could share parts of
the implementation but have a way for it to work smoothly in their build
process? Tools out of the box and then also ones that can be plugged in.

/*******************************************
 Joe Stein
 Founder, Principal Consultant
 Big Data Open Source Security LLC
 http://www.stealth.ly
 Twitter: @allthingshadoop <http://www.twitter.com/allthingshadoop>
********************************************/


On Thu, Mar 13, 2014 at 12:12 PM, David Morales de Frías <
dmora...@paradigmatecnologico.com> wrote:

> Hello Guozhang,
>
> We are using Kafka to connect several actors in our project (osgi, storm,
> vert.x web app...), all of them being consumers and producers of different
> topics. These services can go up and down in different  moments.
>
> Anyway, the issue is the same when you first start the consumer and then
> the producer and the other way (tested with console producer and consumer).
> So it doesn't depend on the order of services.
>
>
> Thanks.
>
>
>
>
>
>
>
>
> 2014-03-13 17:03 GMT+01:00 Guozhang Wang <wangg...@gmail.com>:
>
> > Hello David,
> >
> > This is a known issue with consumer starting before the topic is created:
> >
> > https://issues.apache.org/jira/browse/KAFKA-1006
> >
> > And we are still figuring the right way to fix it. Could you describe
> your
> > use cases where you need to start the consumer beforehand?
> >
> > Guozhang
> >
> >
> > On Thu, Mar 13, 2014 at 2:42 AM, David Morales de Frías <
> > dmora...@paradigmatecnologico.com> wrote:
> >
> > > Hi there,
> > >
> > > A few days ago i have written about an issue (0.8.0) when auto-create
> > topic
> > > is enabled and consumer starts before producer (consumer never sees any
> > > message and they seem to be lost even by the brokers)
> > >
> > > Now i have done the same test with 0.8.1 and the issue is partially
> fixed
> > > but now the consumer never sees the first message in the topic.
> > >
> > > These are the steps:
> > >
> > > 1) kafka-console-consumer --topic newTopic (it doesn't exist)
> > > 2) kafka-console-producer --topic newTopic
> > > 3) Send the first messages
> > > 4) I can see this in the log and the consumer never receives this first
> > > message
> > >
> > > [2014-03-13 10:24:07,223] WARN Error while fetching metadata
> > > [{TopicMetadata for topic test3 ->
> > > No partition metadata for topic test3 due to
> > > kafka.common.LeaderNotAvailableException}] for topic [test3]: class
> > > kafka.common.LeaderNotAvailableException
> > >  (kafka.producer.BrokerPartitionInfo)
> > > [2014-03-13 10:24:07,237] WARN Error while fetching metadata
> > > [{TopicMetadata for topic test3 ->
> > > No partition metadata for topic test3 due to
> > > kafka.common.LeaderNotAvailableException}] for topic [test3]: class
> > > kafka.common.LeaderNotAvailableException
> > >  (kafka.producer.BrokerPartitionInfo)
> > > [2014-03-13 10:24:07,238] ERROR Failed to collate messages by topic,
> > > partition due to: Failed to fetch topic metadata for topic: test3
> > > (kafka.producer.async.DefaultEventHandler)
> > >
> > >
> > > 5) send more messages
> > > 6) consumer receives all the messages (but the first one).
> > >
> > >
> > > The same issue appears when you first start the producer and then the
> > > consumer (on a new topic).
> > >
> >
> >
> >
> > --
> > -- Guozhang
> >
>

Reply via email to