Ok, let me rephrase (may be I am not using correct terms): Simply consider I have 2 topics, and I have both Java and NodeJS client for Kafka.
*NodeJS:* Is it good that I write two producers per each topic like that : *var producer1 = new Producer(client);producer1.on('ready', function () {});producer1.on('error', function (err) { });producer1.send(payloads, cb);var producer2 = new Producer(client);producer2.on('ready', function () {});producer2.on('error', function (err) { });producer2.send(payloads, cb);* Or, I should create one producer for all 2 topics. *Java:*Is it good that I write two producers per each topic like that : *private static Producer<Integer, String> producer1;private static Producer<Integer, String> producer2;producer1 = new Producer<>(new ProducerConfig(properties));producer2 = new Producer<>(new ProducerConfig(properties));* Or, I should create one producer for all 2 topics. Suggest your answer in the light of my estimations (10 topics and 1 million records per each topic in next week) Best Regards, Hafsa 2016-05-24 17:23 GMT+02:00 Tom Crayford <tcrayf...@heroku.com>: > Hi, > > I think I'm a bit confused. When you say "one producer per topic", do you > mean one instance of the JVM application that's producing per topic? > > Thanks > > Tom > > On Tue, May 24, 2016 at 4:19 PM, Hafsa Asif <hafsa.a...@matchinguu.com> > wrote: > > > Tom, > > > > Thank you for your answer. No, I am talking about one PRODUCER for each > > topic, not one instance of same producer class. I am asking for general > > concept only. > > Actually we are just growing and not so much far from the case of 1 > > million records per sec. Just considering our future case, I need your > > suggestion in more detail, that in general is it a good practice to: > > 1. Prepare a single producer for multiple topics (consider 10 topics) . > > 2. Prepare 10 producers for 10 topics respectively. > > > > Your answer is quite satisfying for me, but I need more details so that I > > can convince my team in a good way. > > > > Best Regards, > > Hafsa > > > > 2016-05-24 16:11 GMT+02:00 Tom Crayford <tcrayf...@heroku.com>: > > > > > Is that "one instance of the producer class per topic"? I'd recommend > > just > > > having a single producer shared per process. > > > > > > 1 million records in a week is not very many records, it works down to > > ~1.6 > > > records a second on average, which is nothing (we typically see 1 > > million+ > > > messages per second on our clusters). Or maybe your load is spikier > than > > > that? > > > > > > Generally if you have multiple producer instances they will fail > slightly > > > differently, but most failures that hit one (e.g. a broker going down > and > > > the controller not changing over the leader fast enough). > > > > > > Thanks > > > > > > Tom Crayford > > > Heroku Kafka > > > > > > On Tue, May 24, 2016 at 3:03 PM, Hafsa Asif <hafsa.a...@matchinguu.com > > > > > wrote: > > > > > > > Hello Folks, > > > > > > > > I am using Kafka (0.9) in my company and it is expected that we are > > going > > > > to receive 1 million records in next week. I have many topics for > > solely > > > > different purposes. Is it good that I define one producer per topic > or > > > > create one producer for every topic? > > > > > > > > Right now, I have only 4 topics and each one is expected to receive 1 > > > > million record in next week and after 4 months, we will receive 10 > > > million > > > > records. > > > > > > > > > > > > Is it possible in Kafka that if one producer fails, then other > producer > > > > also does not work? Please also suggest the safe strategy to go. > > > > > > > > Best Regards, > > > > Hafsa > > > > > > > > > >