我有一个用例,我想等待一个喷口发出并开始从其他喷口听kafka。这可能在暴风雨中吗?
例如: Spout A 执行一些处理并发出完成,一旦收到完成消息, Spout B 应该从最后一次运行中停止的偏移开始侦听Kafka主题并发射到其他一些螺栓。
任何帮助都将不胜感激。
答案 0 :(得分:1)
只需选择Spout A与Spout B的通信方式。您可以:
使用另一个kafka主题。当Spout A完成它然后生成一个特殊主题的消息,Spout B在开始从主要主题读取之前等待该主题的消息。
使用写入Zookeeper(或HDFS,HBase等)的标志来表示Spout A已完成
当我说Spout B等待时,它的nextTuple()方法首先测试是否发生了来自A(上面)的通信,并且只是在没有进一步操作的情况下返回,直到它发生。
请记住,创建和提交拓扑的代码也可以初始化标记(如果您正在执行上面的2)或者可以创建一个唯一的消息(上面的1)并将其存储在要传递给的配置中Spouts A和B.