卡夫卡消息没有被消耗

时间:2019-07-05 08:03:19

标签: apache-kafka

我正在运行一个Kafka节点(v 0.10.2)。我们已经配置了log.retention.hours = 480,但是消息到期之前消费者无法使用消息。(Ex消息在1日被推送我和我分别在7月和7月4日启动了我的使用者。在开始使用者之前,我已经通过yahoo Kafka监视服务验证了邮件是否存在,但是在启动使用者时,它将继续轮询并等待消息)。 下面提到的是代理配置:

broker.id=1
delete.topic.enable=true
num.network.threads=5
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=xxx
num.partitions=1
num.recovery.threads.per.data.dir=5
log.retention.hours=480
offsets.retention.minutes=43200
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=x.x.x.x:2181
zookeeper.connection.timeout.ms=30000
zookeeper.session.timeout.ms=30000

我已经用谷歌搜索了,但是找不到原因。请让我知道为什么会这样以及如何解决。

1 个答案:

答案 0 :(得分:0)

某些原因导致不使用消息。您可以通过以下几种方法进行调试:

一个是,您可能正在消耗最新的偏移量,因此您将等待。在这种情况下,请尝试生成针对该主题的消息,并检查是否已使用它们。

接下来,请确保您的使用者订阅了生成消息的分区。如果您使用的是Streams API,则无需担心,因为您将订阅所有分区。

可能存在一些使用者配置问题。尝试使用带有kafka-console-consumer标志的--from-beginning。 如果没有输出,则表示消息可能不存在,或者您在连接消息时遇到了一些困难。 您可以在Kafka机器上和从外部重复此测试。

检查从客户客户端到代理的连接,代理是从中使用主题分区的领导者。如果连接有问题,则必须得到一个异常(例如,获取数据的超时)。 为此,您可以使用 telnet broker_ip:port

有时,您的引导服务器可能可以访问,但主题分区所在的其他代理可能无法访问。

检查您的iptables规则,以查看代理端口是否被阻止。看到 What happens if the leader is not dead but unable to receive messages in Kafka? SPoF?