@KafkaListener没有收到记录

时间:2018-10-16 11:08:13

标签: java spring apache-kafka spring-kafka

无法确定我的kafka侦听器配置出了什么问题。最初,我有一个名为“ transactions” 的非空kafka主题,上面有几条记录(我可以在KafkaTool中看到它)。 这是application.yml:

spring:
  ###
  #   Kafka Settings
  ###
  kafka:
    consumer:
      bootstrap-servers: localhost:9092
      key-deserializer: com.panbet.externalbet.history.report.support.ReportsBetKeyJsonDeserializer
      value-deserializer: com.panbet.externalbet.history.report.support.ReportsBetJsonDeserializer
      group-id: external.history.group

这是Java配置文件:

@EnableKafka
@Configuration
public class KafkaConfig
{
    private final KafkaProperties properties;


    public KafkaConfig(KafkaProperties properties)
    {
        this.properties = properties;
    }


    @Bean
    public ConsumerFactory<ReportsBetKeyDto, ReportsBetDto> kafkaConsumerFactory()
    {
        return new DefaultKafkaConsumerFactory<>(properties.buildConsumerProperties());
    }


    @Bean
    public ConcurrentKafkaListenerContainerFactory<ReportsBetKeyDto, ReportsBetDto> kafkaListenerContainerFactory()
    {
        ConcurrentKafkaListenerContainerFactory<ReportsBetKeyDto, ReportsBetDto> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(kafkaConsumerFactory());
        return factory;
    }
}

我的kafka侦听器看起来像(前面提到的主题“交易”的侦听器):

@Component
public class ReportsConsumer
{
    @KafkaListener(topics = { "transactions" })
    public void listen(ConsumerRecord<ReportsBetKeyDto, ReportsBetDto> record)
    {
        System.out.println(record);
    }
}

我希望:当应用程序启动时,我将在ReportsConsumer.listen方法中捕获脱预算器。但不幸的是,没有任何反应。听过与kafka主题无关。有什么事吗谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,新使用者从主题末尾开始消费。

设置spring.kafka.consumer.auto-offset-reset=earliest

我还建议使用spring.kafka.consumer.enable-auto-commit=false,以便容器管理偏移量。