如何使用core.async正确批处理邮件?

时间:2015-11-09 23:40:29

标签: clojure clojurescript core.async

我想通过count 超时在core.async chan上批量处理消息(即10ms或10条消息,以先到者为准)。 Tim Baldridge has a video on batching,但它在core.async中使用了已弃用的函数,并且不使用传感器。我正在寻找类似以下内容......

(defn batch [in out max-time max-count]
  ...
 )

1 个答案:

答案 0 :(得分:14)

传感器不应该真正关注配料功能 - 作为in频道的接受者,它会看到该频道上任何传感器转换的值,以及任何听取out的听众反过来会看到由该频道的换能器转换的值。

对于实现,下面的函数将从max-count中获取批量in项,或者自上一批输出以来max-time到达的数量很多,并将它们输出到{ {1}},当输入通道关闭时关闭,受输入通道的传感器(如果有的话),任何听取out的听众也将如上所述应用该通道的传感器):

out