卡夫卡消费者延迟

时间:2018-09-28 13:00:39

标签: java apache-kafka

我遇到以下问题:

我正在接收生产者发出的延迟消息(时间长达一分钟)。我无法控制制作人,因此我想确保一切正常进行。

我正在使用kafka-client版本0.11.0.0。版本更改是可能的,但很乏味,因此我想避免尽可能多地更改版本。

我的使用者配置如下:

group.id= unique-group-d
bootstrap.servers = # kafka broker with version 0.11.0.0
auto.offset.reset = latest
# avoid client id collision with Kafka
client.id= some-example-gateway-client

我正在轮询这样的消息:

ConsumerRecords<String, String> tConsumerRecords = tempConsumer.poll(1000);
tempMessage.forEach(entry -> {
    [...]
});

没有100%与客户端或组ID发生名称冲突。我订阅的主题只有1个分区。

我怀疑生产者的负担很重,该生产者开始生产带有零星消息的独立环境。

它的星期五和每个人都已经走了无济于事。

我错过了什么吗?我可以把责任推到生产者那边吗?

1 个答案:

答案 0 :(得分:0)

从Kafka v0.10开始,每条消息都包含一个元数据时间戳属性,该属性可以由生产者在消息创建时设置,也可以由代理在消息插入时设置。

org.apache.kafka.streams.processor.TimestampExtractor提供了一个接口,它有一个方法extract从记录中提取时间戳。

基本上,您只需要比较生产者端和消费者端的时间戳,以确保消息是从生产者端还是消费者端延迟的。

来源: https://kafka.apache.org/10/javadoc/org/apache/kafka/streams/processor/TimestampExtractor.html

https://kafka.apache.org/documentation/#topicconfigs