FileWritingMessageHandler 中的 APPEND_NO_FLUSH 是如何工作的?

How does APPEND_NO_FLUSH in FileWritingMessageHandler work?

The default flush interval is 30000. Why does the start method of the FileWritingMessageHandler divide this interval by 3之前排期吗?

我尝试通过创建以下流来测试 spring-cloud-dataflow 项目的刷新:'time | file --mode=APPEND_NO_FLUSH --directory=test'

预期结果:30 秒后看到 30 条消息写入文件。

实际结果:0 条消息写入文件。

我们必须比间隔更频繁地安排刷新器 运行,否则如果我们在 00:00:30, 直到 00:01:00).

才会刷新文件

通过 运行 以间隔 / 3 设置冲洗器,实际间隔将在 3 到 4 运行 秒之间。

对于 30 秒的间隔,实际间隔将在 30 到 40 秒之间,平均为 35 秒。

为了使它更准确,我们必须更频繁地 运行 冲洗器。

我们应该在 java 文档中阐明算法。

编辑

08:44:01.578 [main] DEBUG o.s.i.channel.DirectChannel - postSend (sent=true) on channel 'input', message: GenericMessage [payload=this is another test, headers={timestamp=1484919841573, id=ac106489-73ad-da18-791d-3d0ec515c567, dir=expression}]

08:44:41.509 [task-scheduler-3] DEBUG o.s.i.file.FileWritingMessageHandler - Flushed: /var/folders/rl/6ys7s69j2tqcjyvy8thdsd7m0000gp/T/dataflow-tests/expression/this.out