java - 仅在某些条件为真时才使用来自 Kafka 的消息
问题描述
我们有特定的主题,只有在条件 consumeEnabled=true 时才需要消费消息。所以,它应该像这样工作:
- 如果应用程序正在启动并且consumeEnabled=true,则将分区分配给消费者并从主题消费消息。
- 如果应用程序正在启动并且consumeEnabled=false,则不要将分区分配给消费者并且不要使用来自主题的消息。
- 如果应用程序已经以 consumeEnabled=false 运行,但在运行时属性变为 consumeEnabled=true,则在运行时将分区分配给消费者并从主题消费消息。
应用程序正在使用消息,但随后将 consumeEnabled 变为 false 的情况,无需考虑。
请帮助定义使用 Spring Kafka 和/或 Kafka Java 客户端实现决策的最佳方式
解决方案
如果你正在使用@KafkaListener
那么
@KafkaListener(id = "foo", ... , autoStartup="${consume.enabled}")
属性在哪里consume.enabled
。
要在运行时启动/停止容器,请使用KafkaListenerEndpointRegistry
bean。
registry.getListenerContainer("foo").start();
推荐阅读
- linux - 无法在 Raspberry Pi 上为 python 3.9.6 安装模块
- ssl - 如何在没有 RPM 的情况下为 HAProxy 安装依赖项。或者,如何在使用源文件时设置 HAProxy
- django - 显示与外键相关的项目
- hibernate - JBOSS事务同步问题
- python - SoundCloud Scraping 问题(soundcloud-lib 错误;HTTPError: HTTP Error 403: Forbidden)
- ssl - 从我的个人签名证书和个人密码计算 CA.key 文件
- c - 在 Windows 上将文件映射到 C 中的虚拟内存
- reactjs - 使用 oidc-react 设置 Cookie
- awk - awk 查找两个字符串之间的行,其中一个是可变的
- css - Shopify 造型问题