制片人卡夫卡数据丢失

时间:2016-07-27 15:02:49

标签: java apache-kafka kafka-consumer-api kafka-producer-api

我一直在尝试配置一个Kafka经纪人,一个主题,一个制作人,一个消费者。 当生产者生产时,如果经纪人倒闭,发生数据丢失, 例如:

In Buffer:
Datum 1 - published
Datum 2 - published
.
. ---->(Broker goes down for a while and reconnects...)
.
Datum 4 - published
Datum 5 - published

为生产者配置的属性是:

bootstrap.servers=localhost:9092
acks=all
retries=1
batch.size=16384
linger.ms=2
buffer.memory=33554432
key.serializer=org.apache.kafka.common.serialization.IntegerSerializer
value.serializer=org.apache.kafka.common.serialization.StringSerializer
producer.type=sync
buffer.size=102400
reconnect.interval=30000
request.required.acks=1

数据大小小于配置的缓冲区大小.. 帮助我知道我哪里出错...!

1 个答案:

答案 0 :(得分:2)

不确定你到底做了什么。我认为,当经纪人关闭时,你尝试写给Kafka的消息不会被Kafka吓到。如果消息未被激活,则表示该消息未写入Kafka,生产者需要重新尝试编写该消息。

最简单的方法是相应地设置配置参数retriesretry.backoff.ms

在应用程序级别,您还可以在Callback中注册send(..., Callback)以获取有关成功/失败的信息。如果失败,您可以再次致电send()重试发送。