2016-11-21 8 views
0

複数のkafkaスパウトタスクを持つトポロジがあります。各スパウト・タスクは、カフカのトピックの集合からメッセージのサブセットを読み込むことになっています。トピックは、AAA.BBB。*などのワイルドカードを使用して購読する必要があります。予想される動作は、すべてのスパウト・タスクが、ワイルドカードに一致するすべてのトピックのすべてのメッセージをまとめて消費することです。各メッセージは、1つのスパウト・タスクにのみルーティングされます(障害シナリオを無視する)。これは現在サポートされていますか?Apache Storm:Kafkaスパウトのトピックワイルドカードのサポート

答えて

0

おそらく、DynamicBrokersReaderクラスを使用できます。

Map conf = new HashMap(); 
... 
conf.put("kafka.topic.wildcard.match", true); 

wildCardBrokerReader = new DynamicBrokersReader(conf, connectionString, masterPath, "AAA.BBB.*"); 
List<GlobalPartitionInformation> partitions = wildCardBrokerReader.getBrokerInfo(); 
... 
for (GlobalPartitionInformation eachTopic: partitions) { 
    StaticHosts hosts = new StaticHosts(eachTopic); 
    SpoutConfig spoutConfig = new SpoutConfig(hosts, eachTopic.topic, zkRoot, id); 
    KafkaSpout spout = new KafkaSpout(spoutConfig); 
} 
... // Wrap those created spout instances into a container 
+0

答えていただきありがとうございますが、これはKafkaの吐き出し口でサポートされていないことを意味しますか? – user3612009

+0

カフカの高水準消費者はWhiltelistを使用してワイルドカードのトピック消費を実装できますが、低レベルの消費者はこれを行うことができません。 KafkaSpoutは実際には低レベルの消費者であるため、直接サポートは提供されません。 – amethystic

関連する問題