【问题标题】:How to make a spout wait on another spout?如何让一个喷口等待另一个喷口?
【发布时间】:2016-09-14 04:08:39
【问题描述】:

我有一个用例,我想等待一个 spout 发出并开始从另一个 spout 监听 kafka。这在 Storm 中可行吗?

例如:Spout A 进行一些处理并发出 done,一旦我收到 done 消息,Spout B > 应该从上次运行时停止的偏移量开始监听 Kafka 主题,并发送到其他一些螺栓。

任何帮助将不胜感激。

【问题讨论】:

    标签: java apache-kafka apache-storm


    【解决方案1】:

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

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

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

    当我说 Spout B 等待时,它的 nextTuple() 方法首先测试是否发生了来自 A(上图)的通信,然后直接返回,直到它发生为止。

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

    【讨论】:

    • 这有意义吗?
    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多