我正在创建一个kafka流,以将信息从一个应用程序复制到另一个应用程序,当我不必发送数据或可能导致问题时,目标api具有一些维护窗口。
我有一个api,当有维护周期时,它会给我一个问题,我想知道的是如何在给定的时间内禁用流,并在维护窗口结束后再次启动它
我正在用Java编写代码
答案 0 :(得分:0)
您可以按照用例所需的方式来管理kafka流状态,如启动/停止。为此,您需要使用内存将kafka流进行收集,并在维护期间使用以下命令停止它们(全部或部分)
每个必需的流上的kafkaStreams.close()
和kafkaStreams.cleanUp()
。维护完成后,使用kafkaStreams.start()
启动它们。
维护感可以通过多种方式完成,例如:
quartz
库)。如果您有该应用的多个实例,则应在每个节点上触发调度程序。maintenance_operations
之类的卡夫卡主题(例如,状态为MAINTENANCE_STARTED
或MAINTENANCE_COMPLETED
的消息)。您的应用始终会听取该主题,并根据事件启动/停止所需的流。如果您有该应用的多个实例,则每个节点都应具有一个maintenance_operations
主题的唯一使用者组。