【问题标题】:Is there a way to log all incoming kafka requests in spring?有没有办法在春季记录所有传入的 kafka 请求?
【发布时间】:2021-10-16 02:42:07
【问题描述】:
我正在使用简单的 kafka 处理程序:
@KafkaListener(
topics = Topic.NAME,
clientIdPrefix = KafkaHandler.LISTENER_ID)
public class KafkaHandler {
public static final String LISTENER_ID = "kafka_listener";
@KafkaHandler(isDefault = true)
@Description(value = "Event received")
public void onEvent(@Payload Payload payload) {
...
}
但是,我的对象(示例中的有效负载)未正确映射(某些字段为空)。
有没有办法在 spring-kafka 应用程序的某个地方记录所有传入的 kafka KV 对?
【问题讨论】:
标签:
spring-boot
apache-kafka
spring-kafka
【解决方案1】:
您可以处理整个 Kafka 记录,而不是仅处理有效负载。
@KafkaListener(topics = "any-topic")
void listener(ConsumerRecord<String, String> record) {
log.info("{}",record.key());
log.info("{}",record.value());
log.info("{}",record.partition());
log.info("{}",record.topic());
log.info("{}",record.offset());
}
将字符串替换为所需的键、值格式,并在应用属性中定义反序列化器类。
spring.kafka.consumer.key-deserializer=YourKeyDeserializer.class
spring.kafka.consumer.value-deserializer=YourValueDeserializer.class