首页 > 解决方案 > Spring Kafka - 如何使用具有不同配置的多个侦听器配置单个 ListenerContainerFactory

问题描述

在使用 Spring Boot 自动配置的默认 KafkaListenerContainerFactory 时,是否可以有多个 @KafkaListeners 使用不同的反序列化器和消息转换器?例如,一个监听器使用 JsonDeserializer,另一个监听器使用 BytesDeserializer 和 BytesJsonMessageConverter。那将是什么配置。是否可以通过定义自定义 KafkaListenerContainerFactory 来实现?我也认为应用程序中应该只有一个 KafkaListenerContainerFactory 是正确的,因为它是一个工厂。

标签: apache-kafkaspring-kafka

解决方案


您可以为每个使用不同的工厂(并@KafkaListener@KafkaListener.

请参阅文档

@KafkaListener(id = "one", topics = "one")
public void listen1(String in) {
    System.out.println("1: " + in);
}

@KafkaListener(id = "two", topics = "two",
        properties = "value.deserializer:org.apache.kafka.common.serialization.ByteArrayDeserializer")
public void listen2(byte[] in) {
    System.out.println("2: " + new String(in));
}

推荐阅读