gpt4 book ai didi

java - 如何在 Storm 拓扑初始化时初始化我们的类?

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:46 24 4
gpt4 key购买 nike

我想在启动 Storm 拓扑时调用自定义类的 init 方法,并且它应该只执行一次。

最佳答案

我会将逻辑放在自定义类上,如下所示:

public class MyCustomClass() {

private static boolean initialized = false;

public static synchronized void init() {

if (!initialized) {

// your initialization logic here

initialized = true;
}

}
}

然后在每个spout的open()方法和每个bolt的prepare()方法中调用MyCustomClass.init()。 boolean 标志和同步块(synchronized block)将确保每个 JVM 都会调用一次初始化逻辑。

一个更优雅的解决方案是在 topologyContext 上使用 getThisWorkerTasks() 和 getThisTaskIndex() 来测试当前任务是否是特定任务(例如 spout 的第一个实例),如果是,则运行初始化逻辑。

关于java - 如何在 Storm 拓扑初始化时初始化我们的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085052/

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