风暴拓扑是否可以通过喷口或螺栓停用并重新激活?

Nit*_*tin 5 java apache-storm

当满足某些条件时,比如遇到特殊类型的元组,我想停用拓扑.这可以在喷嘴/螺栓中完成吗?如果是,有没有办法从spout/bolt重新激活拓扑?

Wad*_*adi 2

我已在下面的代码中添加了所有三个操作来激活/停用/终止。这可以从独立的 java 代码(spout/bolt 外部)调用。

从 Spout 或 Bolt 停用很简单,但重新激活会很棘手,因为一旦停用,您的 Spout/Bolt 就不会主动运行 Java 程序。

import backtype.storm.generated.KillOptions;
import backtype.storm.generated.Nimbus.Client;
import backtype.storm.utils.NimbusClient;
import backtype.storm.utils.Utils;

Client client = NimbusClient.getConfiguredClient(Utils.readStormConfig()).getClient();

client.activate(topologyName);
client.deactivate(topologyName);

KillOptions killOpts = new KillOptions();
killOpts.set_wait_secs(30);
client.killTopologyWithOpts(topologyName, killOpts);
Run Code Online (Sandbox Code Playgroud)