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

时间:2014-08-02 09:02:27

标签: java apache-storm

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

1 个答案:

答案 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);