在给定的时间内停止卡夫卡流

时间:2020-06-29 14:18:09

标签: java apache-kafka apache-kafka-streams

我正在创建一个kafka流,以将信息从一个应用程序复制到另一个应用程序,当我不必发送数据或可能导致问题时,目标api具有一些维护窗口。

我有一个api,当有维护周期时,它会给我一个问题,我想知道的是如何在给定的时间内禁用流,并在维护窗口结束后再次启动它

我正在用Java编写代码

1 个答案:

答案 0 :(得分:0)

您可以按照用例所需的方式来管理kafka流状态,如启动/停止。为此,您需要使用内存将kafka流进行收集,并在维护期间使用以下命令停止它们(全部或部分) 每个必需的流上的kafkaStreams.close()kafkaStreams.cleanUp()。维护完成后,使用kafkaStreams.start()启动它们。

维护感可以通过多种方式完成,例如:

  1. 通过计划(例如,使用quartz库)。如果您有该应用的多个实例,则应在每个节点上触发调度程序。
  2. 通过诸如maintenance_operations之类的卡夫卡主题(例如,状态为MAINTENANCE_STARTEDMAINTENANCE_COMPLETED的消息)。您的应用始终会听取该主题,并根据事件启动/停止所需的流。如果您有该应用的多个实例,则每个节点都应具有一个maintenance_operations主题的唯一使用者组。