【问题标题】:Can a storm topology be deactivated and reactivated by a spout or a bolt?风暴拓扑可以通过喷口或螺栓停用和重新激活吗?
【发布时间】:2014-08-02 09:02:26
【问题描述】:

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

【问题讨论】:

  • activatedeactivate 只是 ISpout 接口中的 acknextTuple 之类的方法。虽然我之前没有在 spout 中停用/重新激活,但我想这是可能的。
  • 有趣的问题,这对维护很有用..
  • @halfelf activate 和 deactivate 是不错的插件,可以在其上制定进一步的实施策略。但是,我仍然认为在停用后激活会非常困难,因为即使在 spout 停用后也需要运行重新激活策略。

标签: java apache-storm


【解决方案1】:

我在以下代码中添加了所有三个操作来激活/停用/杀死。这可以从独立的 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多