提问者:小点点

在给定时间段内停止Kafka流


我正在创建一个kafka流来将信息从一个应用程序复制到另一个应用程序,目标api有一些维护窗口,当我不需要发送数据或者我可能在它上引起问题时。

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

我在Java写代码


共1个答案

匿名用户

您可以管理kafka streams状态,比如启动/停止,以您的用例所需的方式。 为此,您需要对内存中的kafka流进行收集,并在维护期间对每个所需的流使用Kafkastreams.clos()Kafkastreams.cleanup()停止它们(全部或部分)。 维护完成后,使用kafkastreams.start()启动它们。

维护监听可以通过多种方式进行,例如:

    通过调度(例如使用quartz库)执行
  1. 。 如果您有应用程序的多个实例,则应在每个节点上触发排定程序。
  2. 由一些kafka主题(如maintenance_operations)(例如,状态为maintenance_startedmaintenance_completed)提供。 你的应用程序总是会收听这个主题,并根据事件启动/停止所需的流。 如果您有应用程序的多个实例,则每个节点都应该有一个唯一的maintenance_operations主题的使用者组。