从Kafka检索主题并发送到相应的喷口和螺栓

时间:2013-09-23 11:50:35

标签: apache-storm apache-kafka

我正在向Kafka制作多个主题。我想从Kafka检索所有主题,我有不同的喷口和螺栓。我想将每个主题发送到相应的喷口和相关的螺栓(例如,对于topic1我有相应的spout1和bolt1,对于topic2我有相应的spout2和bolt2等......)
我该怎么做?

2 个答案:

答案 0 :(得分:3)

我创建了一个演示kafka spout项目,您应该可以将其用作起点:https://github.com/buildlackey/cep/tree/master/storm%2Bkafka

问候/

克里斯

答案 1 :(得分:0)

虽然我没有得到您正在尝试做的事情(您是否为每个主题运行了单独的拓扑?)通常您可以做的是,在您的spout1中创建一个将订阅topic1并发布值的消费者一收到一个。然后将输出链接到相应的螺栓以进一步执行。

但据我所知,你应该看一下github storm-contrib项目下的 KafkaSpout 实现。它基本上是一个从Kafka集群读取的spout实现,您只需要正确地创建配置。

从文档中它基本上看起来像这样

    SpoutConfig spoutConfig = new SpoutConfig(
               ImmutableList.of("kafkahost1", "kafkahost2"), // list of Kafka brokers
               8, // number of partitions per host
               "clicks", // topic to read from
               "/kafkastorm", // the root path in Zookeeper for the spout to store the consumer offsets
               "discovery"); // an id for this consumer for storing the consumer offsets in Zookeeper
    KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig);

这里要提到的一点是上面的实现使用了Kafka 0.7,所以如果你正在使用最新的(0.8,你应该)实现,你可以找到0.8支持here