[英]Spring Kafka with Dynamic @KafkaListener
我将 Spring Boot 2.x 与spring-kafka (不是spring-integration-kafka )一起使用
我有多个 bean 用@KafkaListener
注释......每个 bean 都从一个主题中消费......所以因为我有 12 个主题,那么我还需要有 12 个 KafkaConsumers bean......我想知道我是否可以创建这些 bean以编程方式/动态方式...也许使用KafkaListenerEndpointRegistry来动态创建消费者容器。
注意:我需要批量消费消息......所以也许我可以使用BatchMessageListener ?
当前代码:
@KafkaListener(
id = COUNTRY,
containerFactory = KAFKA_LISTENER_FACTORY_BEAN_NAME,
topics = {TOPIC},
groupId = GROUP_ID,
clientIdPrefix = CLIENT_ID,
errorHandler = VALIDATION_ERROR_HANDLER_BEAN_NAME
)
@Override
public void consume(final List<MessageDTO> messages,
@Header(KafkaHeaders.RECEIVED_TOPIC) final List<String> topics,
@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) final List<String> messagesKey,
@Header(KafkaHeaders.RECEIVED_PARTITION_ID) final List<Integer> partitionIds,
@Header(KafkaHeaders.RECEIVED_TIMESTAMP) final List<Long> timestamps,
@Header(KafkaHeaders.OFFSET) final List<Long> offsets) {
(...)
}
每个主题使用者都有自己的实现,具体取决于主题。 你们能指点我一个博客/伪代码/git线程/答案吗?
创建您的对象并将其注册为通过上述方法中的供应商提供它的 bean。 Spring 将运行设置一切所需的 bean 后处理器。
如果你的主题有一些模式,你也可以试试这个:
kafka:
bindings:
input.consumer.destination-is-pattern: true
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.