Hi, Jay, Thank you for your answer.
Sorry, I still do not understand your meaning. I guess the two parameters you mentioned are log.flush.interval and log.default.flush.interval.ms. However, these two parameters only control when Kafka issues a flush (i.e., calling FileChannel.force()). Fsync (fileOutputStream.getFD().sync()) is controlled by another parameter log.default.flush.scheduler.interval.ms. scheduler.schedule("kafka-recovery-point-checkpoint", checkpointRecoveryPointOffsets, delay = InitialTaskDelayMs, period = flushCheckpointMs, TimeUnit.MILLISECONDS) This thread is only time-controlled. It does not check the number of messages. Thank you, Xiao Li On Mar 5, 2015, at 11:59 AM, Jay Kreps <jay.kr...@gmail.com> wrote: > Hey Xiao, > > That's not quite right. Fsync is controlled by either a time based criteria > (flush every 30 seconds) or a number of messages criteria. So if you set > the number of messages to 1 the flush is synchronous with the write, which > I think is what you are looking for. > > -Jay