FileWritingMessageHandler中的APPEND_NO_FLUSH如何工作?

时间:2017-01-19 12:58:53

标签: java spring spring-integration spring-cloud-stream

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条消息写入文件。

1 个答案:

答案 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