You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@kafka.apache.org by Ken Krugler <kk...@transpac.com> on 2012/06/28 05:19:39 UTC
Re: Running Kafka in local test mode
Hi Hisham,
> I've whipped up a quick Scala example of an embedded Kafka broker,
> producer, and consumer. I don't use ZK and I use the simple consumer
> (manual offset management).
>
> https://gist.github.com/2650743
>
> Hopefully this helps clear things up a bit.
Yes, thanks - and sorry for the delay in responding, I had to step away from this project for a bit.
I was easily able to get the equivalent Java code running.
The remaining question I've got now is how to cleanly shut things down.
I can terminate the Kafka server, but I can't terminate the threads that are running as consumers.
Specifically when I terminate the executor that I'm using to run the consumer threads, this fails, and in the logs I see:
[2012-06-27 20:07:29,696] INFO fetch reconnect due to java.nio.channels.ClosedByInterruptException (kafka.consumer.SimpleConsumer)
The consumer threads are blocked on SimpleConsumer#fetch, and the fetch reconnect means that this doesn't ever return.
Any input on how best to terminate properly in a test environment?
Thanks!
-- Ken
> On Wed, May 9, 2012 at 9:14 PM, Ken Krugler <kk...@transpac.com> wrote:
>> Hi Hisham,
>>
>> Thanks for chiming in - see below.
>>
>>> When you call shutdown() on KafkaServerStartable you should also call
>>> awaitShutdown if you're expecting your app / JVM to terminate (perhaps
>>> you are not).
>>
>> It's been shutting down properly, but you're right that calling awaitShutdown() ensures that everything has been properly cleaned up before I continue.
>>
>>> Also take into account that if the embedded KafkaServer
>>> instance in KafkaServerStartable throws an exception on shutdown it
>>> will call Runtime.getRuntime.halt(1) (not sure if you want this
>>> behaviour).
>>
>> Not really, but hopefully my unit tests aren't triggering exceptions in the KafkaServer :)
>>
>>> I'm embedding a Kafka broker and producer in an experimental lib doing
>>> pretty much what you're doing except I use KafkaServer directly and
>>> make no use of ZK.
>>
>> I initially tried that, but ran into the issue where Kafka consumers always create a ZooKeeper client, which expects to have a ZooKeeper server running.
>>
>> Do you know if it's possible to set up a complete Kafka environment (broker, producer, consumer) without ZooKeeper?
>>
>> -- Ken
>>
>> --------------------------
>> Ken Krugler
>> http://www.scaleunlimited.com
>> custom big data solutions & training
>> Hadoop, Cascading, Mahout & Solr
>>
>>
>>
>>
>
>
>
> --
> Hisham Mardam-Bey
> [ Director of Engineering ] [ Mate1 Inc. ]
>
> A: Because it messes up the order in which people normally read text.
> Q: Why is top-posting such a bad thing?
> A: Top-posting.
> Q: What is the most annoying thing in e-mail?
>
> -=[ Codito Ergo Sum ]=-
--------------------------
Ken Krugler
http://www.scaleunlimited.com
custom big data solutions & training
Hadoop, Cascading, Mahout & Solr