2016-11-21 80 views
0

我们有一个拓扑有多个卡夫卡喷口任务。每个喷口任务都应该读取来自一组Kafka主题的消息子集。主题必须使用AAA.BBB *等通配符来订阅。预期的行为将是所有喷嘴任务共同消耗所有与通配符匹配的主题中的所有消息。每条消息仅被路由到单个喷口任务(忽略故障情况)。目前是否支持?Apache Storm:支持卡夫卡喷嘴中的主题通配符

回答

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

感谢您的回答,但这是否意味着卡夫卡鲸鱼喷壶不支持? – user3612009

+0

卡夫卡高级消费者可以采用Whiltelist来实现通配话题消费,但是低级消费者不能这样做。 KafkaSpout实际上是一个低级消费者,因此不提供直接支持。 – amethystic