【问题标题】:retrieving topics from Kafka and sending to corresponding spout and bolt从 Kafka 检索主题并发送到相应的 spout 和 bolt
【发布时间】:2013-09-28 07:20:19
【问题描述】:

我正在为 Kafka 制作多个主题。我想从 Kafka 中检索所有主题,并且我有不同的 spout 和 bolts。我想将每个主题发送到相应的 spout 和关联的 bolt(例如,对于 topic1,我有相应的 spout1 和 bolt1,对于 topic2,我有相应的spout2 和 bolt2 等等..)
我该怎么做?

【问题讨论】:

    标签: apache-storm apache-kafka


    【解决方案1】:

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

    问候 /

    克里斯

    【讨论】:

      【解决方案2】:

      虽然我不完全了解您要做什么(您是否为每个主题运行单独的拓扑?)通常您可以做的是,在您的 spout1 中创建一个消费者,该消费者将订阅 topic1 并发出值只要它收到一个。然后将输出链接到相应的螺栓以供进一步执行。

      但据我了解,您应该看看 githubstorm-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

      【讨论】:

        猜你喜欢
        • 2016-04-17
        • 2015-09-03
        • 2015-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-15
        相关资源
        最近更新 更多