想分享我在邮件列表中找到的内容:
您在主题图中传递的数字控制主题分为多少个流.在您的情况下,如果传入1,则所有10个分区的数据将被送入1个流.如果传入2,则2个流中的每一个都将从5个分区获取数据.如果传入11,其中10个将从1个分区获取数据,1个流将不会获得任何数据.
通常,您需要在自己的线程中迭代每个流.这是因为如果没有新事件,每个流都可以永久阻止.
示例代码段:
topicCount.put(msgTopic, new Integer(partitionCount));
Map>> consumerStreams = connector.createMessageStreams(topicCount);
List> streams = consumerStreams.get(msgTopic);
for (final KafkaStream stream : streams) {
ReadTask task = new ReadTask(stream, msgTopic);
task.addObserver(this.msgObserver);
tasks.add(task); executor.submit(task);
}