作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个用例,我想等待一个 spout 发出并开始从其他 spout 监听 kafka。这在 Storm 中可能吗?
例如:Spout A 做一些处理并发出 done,一旦我收到 done 消息,Spout B 应该从上次运行时停止的偏移量开始监听 Kafka 主题,并发送给其他一些 bolt 。
如有任何帮助,我们将不胜感激。
最佳答案
只需选择 Spout A 与 Spout B 的通信方式即可。您可以:
使用另一个kafka主题。当 Spout A 完成后,它会生成一条针对特定主题的消息,Spout B 在开始阅读主要主题之前等待关于该主题的消息。
使用写入 Zookeeper(或 HDFS、HBase 等)的标志来指示 Spout A 已完成
当我说 Spout B 等待时,它的 nextTuple() 方法首先测试来自 A(上面)的通信是否已经发生,并且在它完成之前不做任何进一步的操作就简单地返回。
请记住,您创建和提交拓扑的代码也可以初始化标志(如果您正在执行上面的 2)或者可以创建一个唯一的消息(对于上面的 1)并将其存储在配置中以传递给 Spouts A和 B.
关于java - 如何让一个 spout 等待另一个 spout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37286610/
我是一名优秀的程序员,十分优秀!