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