如何让喷嘴等待另一个喷口?

时间:2016-05-17 21:35:10

标签: java apache-kafka apache-storm

我有一个用例,我想等待一个喷口发出并开始从其他喷口听kafka。这可能在暴风雨中吗?

例如: Spout A 执行一些处理并发出完成,一旦收到完成消息, Spout B 应该从最后一次运行中停止的偏移开始侦听Kafka主题并发射到其他一些螺栓。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

只需选择Spout A与Spout B的通信方式。您可以:

  1. 使用另一个kafka主题。当Spout A完成它然后生成一个特殊主题的消息,Spout B在开始从主要主题读取之前等待该主题的消息。

  2. 使用写入Zookeeper(或HDFS,HBase等)的标志来表示Spout A已完成

  3. 当我说Spout B等待时,它的nextTuple()方法首先测试是否发生了来自A(上面)的通信,并且只是在没有进一步操作的情况下返回,直到它发生。

    请记住,创建和提交拓扑的代码也可以初始化标记(如果您正在执行上面的2)或者可以创建一个唯一的消息(上面的1)并将其存储在要传递给的配置中Spouts A和B.