【发布时间】:2017-10-31 20:20:54
【问题描述】:
我将 Kafka Listener 的并发设置为 1。
ConcurrentKafkaListenerContainerFactory<String, Map<String, Object>>
factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConcurrency(conncurrency);
factory.setConsumerFactory(consumerFactory());
factory.setRetryTemplate(retryTemplate());
我正在听 3 个不同的主题
@KafkaListener(topics = "#{'${kafka.consumer.topic.name}'.split(',')}", containerFactory = "kafkaListenerContainerFactory")
public void listen(@Payload Map<String, Object> conciseMap,
@Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition,
@Header(KafkaHeaders.OFFSET) int offset,
Acknowledgment ack) {
processMessage(conciseMap,partition,offset,ack,false);
}
在这种情况下,侦听器是否会从第一个主题中读取一条消息,一旦处理完毕,是否会从下一个主题中读取一条消息,依此类推?或者它会同时处理来自每个主题的 1 条消息。
如果是前者,有没有办法在不创建多个监听器的情况下同时从所有主题中读取 1 条消息?
【问题讨论】:
标签: java apache-kafka kafka-consumer-api spring-kafka