我是Kafka的超级新手,坦率地说,我对这种类型的消费者一无所知(据我了解,由于该产品已经批量生产),因此我努力弄清楚如何从根本上消耗这些消费者的清单事件。
我有这样的东西:
@KafkaListener(topics = "#{'${kafka.listener.list-of-topics}'.split(',')}")
public void readMessage(List<ConsumerRecord<String, String>> records,
final Acknowledgment acknowledgment) {
try {
....
我知道我收到一个事件(至少一个事件)的类型为“ MyObject”,所以当我收到一条消息时就可以做到。
我相信必须有一种方法来读取/播放此List<ConsumerRecords<String,String>
,但我不知道如何。
有什么想法吗?
答案 0 :(得分:0)
请参见the reference manual: Batch Listeners。
从版本1.1开始,可以将@KafkaListener方法配置为接收从消费者调查中接收的整批消费者记录。要将侦听器容器工厂配置为创建批处理侦听器,请设置batchListener属性:
@Bean
public KafkaListenerContainerFactory<?> batchFactory() {
ConcurrentKafkaListenerContainerFactory<Integer, String> factory =
new ConcurrentKafkaListenerContainerFactory<>();
factory.setConsumerFactory(consumerFactory());
factory.setBatchListener(true); // <<<<<<<<<<<<<<<<<<<<<<<<<
return factory;
}
...
您还可以收到
ConsumerRecord<?, ?>
对象的列表,但是它必须是在上定义的唯一参数(使用手动提交和/或Acknowledgment
参数时,除了可选的Consumer<?, ?>
之外)方法:...
使用Spring Boot时,设置属性spring.kafka.listener.type=batch
。