【问题标题】:Storm best topology design patterns for I/O tasksStorm 用于 I/O 任务的最佳拓扑设计模式
【发布时间】:2023-04-01 10:46:01
【问题描述】:

所以,我有一个框架,其中输入是Tweet 文档的Kafka 队列。我的拓扑需要读取它并访问三个不同的外部 API。

我需要一种方法来确保所有三个都完成,然后再继续前进。我不认为BatchBolt 是一个好的解决方案,是吗?有人可以帮忙吗?

编辑 / 澄清

三个 API 命中需要返回结果。在将文档传递给下一个 bolt 之前,我需要处理这些响应。

【问题讨论】:

    标签: asynchronous io apache-storm


    【解决方案1】:

    如果我没听错的话。你有 kafka spout emmiting 消息。而且每条消息都需要在三个不同的系统中传递。 这可以通过配置拓扑轻松完成。

    TopologyBuilder topologyBuilder = new TopologyBuilder ();
    topologyBuilder.setSpout("Generator", spout, 1);
    topologyBuilder.setBolt("External1", bolt1, 1).localOrShuffleGrouping("Generator");
    topologyBuilder.setBolt("External2", bolt2, 1).localOrShuffleGrouping("Generator");
    topologyBuilder.setBolt("External3", bolt3, 1).localOrShuffleGrouping("Generator");
    

    在这个简单的示例中,3 个不同的螺栓连接到 1 个 kafka 喷口。当 spout 发出消息时,它会同时到达所有三个螺栓。如果其中一个螺栓没有确认元组,它将失败,并重新发送到所有这些螺栓。

    【讨论】:

    • 啊,不。它们都需要调用外部 API 并返回结果,然后再发送到下一个 Bolt。
    • 那么你需要依次调用这3个API吗?
    • 不是顺序的,但在继续下一步之前,我需要所有三个的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2019-05-24
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多