【发布时间】:2014-02-18 01:07:34
【问题描述】:
在大容量实时 Java Web 应用程序中,我正在向 apache kafka 发送消息。 目前我正在向单个主题发送消息,但将来我可能需要向多个主题发送消息。
在这种情况下,我不确定要为每个主题创建一个生产者,还是应该为我的所有主题使用一个生产者?
这是我的代码:
props = new Properties();
props.put("zk.connect", <zk-ip1>:<2181>,<zk-ip3>:<2181>,<zk-ip3>:<2181>);
props.put("zk.connectiontimeout.ms", "1000000");
props.put("producer.type", "async");
Producer<String, Message> producer = new kafka.javaapi.producer.Producer<String, Message>(new ProducerConfig(props));
ProducerData<String, Message> producerData1 = new ProducerData<String, Message>("someTopic1", messageTosend);
ProducerData<String, Message> producerData2 = new ProducerData<String, Message>("someTopic2", messageTosend);
producer.send(producerData1);
producer.send(producerData2);
如您所见,一旦创建了生产者,我就可以使用它向不同的主题发送数据。 我想知道最佳做法是什么?如果我的应用程序发送到多个主题(每个主题获取不同的数据),我可以/应该使用单个生产者还是应该创建多个生产者?什么时候(一般来说)我应该使用多个生产者?
【问题讨论】:
标签: java apache-kafka