The default flush interval is 30000。为什么在安排它之前FileWritingMessageHandler divide this interval by 3的start方法呢?
我尝试通过创建以下流来测试spring-cloud-dataflow项目的刷新:'time | file --mode = APPEND_NO_FLUSH --directory = test'
预期结果:30秒后查看文件中写入的30条消息。
实际结果:0条消息写入文件。
答案 0 :(得分:1)
如果我们在00:00检查,我们必须安排冲洗器比间隔更频繁地运行,否则冲洗可能需要2倍的间隔(假设您在00:00:01写一条记录) :30,文件不会被刷新到00:01:00)。
通过以间隔/ 3运行冲洗器,实际间隔将介于3到4次运行之间。
间隔为30秒,实际间隔将介于30到40秒之间,平均为35秒。
为了使其更准确,我们必须更频繁地运行冲洗器。
我们应该在java docs中澄清算法。
修改强>
08:44:01.578 [main] DEBUG osichannel.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