当满足某些条件时,比如遇到特殊类型的元组,我想停用拓扑。这可以在喷嘴/螺栓中完成吗? 如果是的话,有没有办法从spout / bolt重新激活拓扑?
答案 0 :(得分:2)
我在bolow代码中添加了所有三个动作来激活/停用/终止。这可以从独立的java代码(外部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);