【发布时间】:2018-11-22 10:52:44
【问题描述】:
我一直在尝试配置一个 Kafka 代理、一个主题、一个生产者、一个消费者。 当 producer 生产时,如果 Broker 宕机,就会发生数据丢失, 例如:
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
数据大小小于配置的缓冲区大小.. 帮助我知道我哪里出错了...!
【问题讨论】:
-
不确定具体是做什么的。我假设您在代理完成时尝试写入 Kafka 的消息没有得到 Kafka 的确认。如果消息没有被确认,则表明消息没有写入Kafka,生产者需要重新尝试写入消息。
-
是的,解决方案是,尽可能多地重试,直到代理出现,所以最后一个偏移量将提交,重试值将写入代理。
标签: java apache-kafka kafka-consumer-api kafka-producer-api