0

私はApache Kafkaが初めてで、与えられた例を試してみてください。

次のコード スニペットは、ConsumerConnector を初期化するために使用されます。トピック カウント パラメーターに混乱しています。そのトピックに対応する数のストリームをカフカが配布するようです。ただし、何度か試してみましたが、最初のストリームのみがメッセージを生成します。では、2 つの質問があります。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));

与えられた例では、サンプル トピックは通常 1 つのパーティションのみで作成されるため、1 は整数です。トピックに 1 つのパーティションしかない場合、並列処理の機能はありません (同じグループに複数のコンシューマーがあるかのように、データを取得しないコンシューマー インスタンスがいくつか存在します)。したがって、複数のストリームを作成する理由はありません。そのため、この単一のパーティションに対して単一のストリームのみが作成されるため、メッセージを生成する最初の (そして唯一の) ストリームしかありません。

于 2015-06-24T21:43:07.937 に答える