【问题标题】:How I can disable a topology for a period of time and then start it automatically when the period ends如何在一段时间内禁用拓扑,然后在一段时间结束时自动启动它
【发布时间】:2018-05-08 11:19:19
【问题描述】:

我有一个拓扑,它从一个主题收集修改,对数据进行一些修改,然后将它们发布到 API 上,我们发布的 api 有一些维护期(我们不能在那里发布任何东西的时间),我们已经提供了一些服务而不是返回维护期,但我们想知道我们如何在一段时间内禁用拓扑,然后在该期间结束时自动启动它

我们正在使用以下技术:

  • Spring 引导 REST api
  • 阿帕奇风暴
  • 阿帕奇卡夫卡
  • 卡夫卡风暴

不知道 Kafka Spout 集成中是否有停止阅读的方法。

感谢您的帮助

【问题讨论】:

    标签: java apache-kafka apache-storm


    【解决方案1】:

    您可以在 Storm 上执行此操作:在您的维护开始时间(使用 TimerTask 等),调用

    Nimbus.Client client = NimbusClient.getConfiguredClient(Utils.readStormConfig()).getClient();
    ..
    client.deactivate("topologyName");
    

    最后,请致电client.activate.

    【讨论】:

    • 如果您愿意,也可以通过 Storm CLI 停用拓扑。
    • 如果我们在处理消息时禁用拓扑,我们会丢失来自 Kafka 的消息吗?
    • 关于 CLI,正确,我只是选择了允许对时间进行编程的方法,而不是在脚本中进行(如 cron)。对于数据丢失,我的用例是分析,其中允许分析丢失(总体而言,系统比停机时间更活跃,因此收集的统计数据应该非常精确)。
    猜你喜欢
    • 1970-01-01
    • 2015-11-27
    • 2013-11-07
    • 1970-01-01
    • 2015-07-14
    • 2013-09-23
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    相关资源
    最近更新 更多