【发布时间】:2020-06-29 07:17:10
【问题描述】:
我有一个 kafka 消费者 java 应用程序。 我正在从该应用程序中阅读两个单独的 kafka 主题。
对于主题 1,有一个名为 kafkaListenerContainerFactory 的 KafkaListenerContainerFactory,下面是代码 sn-p。消息采用 avro 格式。 Pojo1 是 pojo 类 使用 avro 架构构建。
@Bean
public ConcurrentKafkaListenerContainerFactory<String, Pojo1> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, Pojo1> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
return factory;
}
为了消费来自topic1的消息,我们有以下方法
@kafkaListener (topics="topic1") public boolean readTopic1(ConsumerRecord<String,Pojo1> record){ // logic }
现在这个应用程序也在读取来自 topic2 的消息,它也有 avro 消息,Pojo2 是使用相应的 avro 模式构建的 pojo 类。
要从topic2中读取,我们有以下方法
@kafkaListener (topics="topic2") public boolean readTopic2(ConsumerRecord<String,Pojo2> record){ // logic }
现在我不知道来自 topic2 的消费消息是如何按预期工作的。
kafkaListenerContainerFactory 配置了 Pojo1,所以如何从 Pojo2 的 topic2 读取消息。 据我所知,kafka 仅在缺少名称为“kafkaListenerContainerFactory”的 bean 时才创建默认容器工厂,但在我的应用程序中 我们已经为 topic1 构建了一个 kafkaListenerContainerFactory。
据此应该有另一个为 Pojo2 创建的 KafkaListenerContainerFactory 并且应该在使用 @kafkaListener (topics="topic2", containerFactory="factoryForTopic2") 时给出参考
谁能帮我理解 KafkaListenerContainerFactory 如何为具有不同消息架构的不同主题工作。
【问题讨论】:
标签: java apache-kafka spring-kafka