0

我是 apache kafka 的新手,并尝试使用给出的示例。

下面的代码片段是用来初始化一个ConsumerConnector的,我被topic count参数搞糊涂了;似乎它会导致 kafka 为该主题分发相应数量的流。但是,我尝试了几次,只有第一个流产生消息。所以,有两个问题:1.如何确定一个主题的计数?2. 消息如何跨流拆分?

提前致谢。

    Map<String, Integer> topicCountMap = new HashMap<String, Integer>();
    **topicCountMap.put(topic, new Integer(a_numThreads));**
    Map<String, List<KafkaStream<byte[], byte[]>>> consumerMap = consumer
            .createMessageStreams(topicCountMap);
    List<KafkaStream<byte[], byte[]>> streams = consumerMap.get(topic);
4

1 回答 1

1

如果我稍微不正确,其他用户可能会随时纠正我,但是:

我之前看过这个例子,代码通常初始化为

topicCountMap.put(topic, new Integer(1));

其中一个是整数,因为对于给定的示例,示例主题通常仅使用单个分区创建。当您的主题只有一个分区时,没有并行能力(就像您在同一组中有多个消费者一样,会有一些消费者实例没有获取任何数据),因此没有理由创建多个流。因此,对于这个单个分区,只创建一个流,这就是为什么您只有第一个(也是唯一一个)流产生消息的原因。

于 2015-06-24T21:43:07.937 回答