需要 Spring kafka 自定义日志记录

时间:2021-01-27 09:44:21

标签: java spring spring-boot apache-kafka spring-kafka

我有一个标准的 spring kafka 设置,如下所示,

@Bean
    public ConcurrentKafkaListenerContainerFactory<String, String> feedbackStreamListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(consumerFactory());
        return factory;
    }
@KafkaListener(topics = ("my-topic"),groupId = ("groupId"),containerFactory = "listenerContainerFactory")
    public void myListener(@Payload String message) {
        System.out.println("Received Message : " + message);
        // do some heavy processing
    }

现在我需要在 3 个场景中自定义日志记录(从我的应用程序生成日志),

  1. 当我启动消费者时,可以说 kafka 集群已关闭,或者我提供了错误的引导服务器,我需要对其进行自定义记录。
  2. 当消费者成功启动时,就在轮询之前提供自定义日志。
  3. 如果有自定义消息转换器,并且存在反序列化问题,请自定义记录。

1 个答案:

答案 0 :(得分:0)

参见 KafkaEvent 实现:https://docs.spring.io/spring-kafka/docs/current/reference/html/#events

因此,当您在 ConsumerFailedToStartEvent 中捕获 @EventListener 时,您可以使用 ConsumerStartedEvent 记录您想要的任何内容等等。

甚至没有反序列化问题,但是当消费者发生错误时,您绝对可以使用 GenericErrorHandler 来记录某些内容:https://docs.spring.io/spring-kafka/docs/current/reference/html/#annotation-error-handling