Spring Kafka Listener 暂停消息处理一段时间
Spring Kafka Listener to pause processing of messages for certain period of time
这是我的用例。
我有一个按计划在单独进程上运行的日终馈送进程。
白天,我将通过 Kafka 主题接收实时更新,Spring Kafka 侦听器将使用和处理这些更新。但是,我想在 EOD 提要作业启动期间暂停 Kafka 侦听器,并在作业完成后恢复。
这是我正在考虑的方法。
出于某些管理目的,我已经公开了 JMX bean 来停止和启动侦听器。同样,我想在 EOD 提要作业启动时利用 stop/start Kafka 侦听器。这将得到更多的同步控制。
因为我可以更好地控制 EOD 作业何时启动以及何时完成。在此期间,可以根据时间表暂停 Kafka 侦听器。由于这是异步的,因此 EOD 馈送作业需要比平时更多的时间才能完成,这会出于某种原因导致问题。
是否有任何其他选项可以在特定时间内停止 Kafka 侦听器?
假设您正在使用 @KafkaListener
,您可以 pause/resume(或 stop/start)使用 KafkaListenerEndpointRegistry
bean 的侦听器容器。
给每个听众一个 id
以从注册表中获取它。
请参阅文档中的 @KafkaListener
Lifecycle Management。
如果您不使用 @KafkaListener
并直接将侦听器容器用作 beans,您可以简单地 pause/resume 或 stop/start 容器 bean 本身。
这是我的用例。
我有一个按计划在单独进程上运行的日终馈送进程。
白天,我将通过 Kafka 主题接收实时更新,Spring Kafka 侦听器将使用和处理这些更新。但是,我想在 EOD 提要作业启动期间暂停 Kafka 侦听器,并在作业完成后恢复。
这是我正在考虑的方法。
出于某些管理目的,我已经公开了 JMX bean 来停止和启动侦听器。同样,我想在 EOD 提要作业启动时利用 stop/start Kafka 侦听器。这将得到更多的同步控制。
因为我可以更好地控制 EOD 作业何时启动以及何时完成。在此期间,可以根据时间表暂停 Kafka 侦听器。由于这是异步的,因此 EOD 馈送作业需要比平时更多的时间才能完成,这会出于某种原因导致问题。
是否有任何其他选项可以在特定时间内停止 Kafka 侦听器?
假设您正在使用 @KafkaListener
,您可以 pause/resume(或 stop/start)使用 KafkaListenerEndpointRegistry
bean 的侦听器容器。
给每个听众一个 id
以从注册表中获取它。
请参阅文档中的 @KafkaListener
Lifecycle Management。
如果您不使用 @KafkaListener
并直接将侦听器容器用作 beans,您可以简单地 pause/resume 或 stop/start 容器 bean 本身。