gpt4 book ai didi

java - Apache Storm - 用另一个 bolt 组成一个 bolt

转载 作者:行者123 更新时间:2023-11-30 11:17:54 27 4
gpt4 key购买 nike

我正在使用 Apache Storm,我想知道是否可以像这样用另一个 bolt 组合一个 bolt :

public class MyNewBolt extends BaseRichBolt {
private MyOldBolt bolt; // MyOldBolt also extends BaseRichBolt

public MyNewBolt(MyOldBolt bolt) {
this.bolt = bolt;
}

@Override
public void prepare(Map map, TopologyContext topologyContext, OutputCollector outputCollector) {
bolt.prepare(map, topologyContext, outputCollector);
//Prepare other stuff
}

@Override
public void execute(Tuple tuple) {
bolt.execute(tuple);
bolt.someOtherMethod();
//Do some other stuff
}

@Override
public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) {
bolt.declareOutputFields(outputFieldsDeclarer);
}
}

在此之后我将提交 bolt :

public static void main(String[] args) throws Exception {
.
.
.
TopologyBuilder builder = new TopologyBuilder();
BaseRichBolt bolt = new MyNewBolt(new MyOldBolt());
builder.setBolt("bolt-id", bolt).someGrouping(....);
.
.
.
}

这在我以本地模式运行时有效,但它真的可以在远程模式下运行吗?在这种情况下,Storm 如何处理 bolt 序列化-反序列化?现在创建了多少任务?

最佳答案

我建议您采用另一种方法(巧合的是我使用的方法)。与其将 bolt 视为可重用类,不如将 bolt 的业务逻辑分解为纯 Java 类。然后,如果您想在另一个 bolt 中重用该逻辑,这样做会容易得多。

我还建议您将与特定流相关的所有行为(元组中的名称、类型和值的顺序等知识)分解到另一个类中。你的 bolt 类的实现应该是相当少的。

关于java - Apache Storm - 用另一个 bolt 组成一个 bolt ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24110418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com