我可以使用一些伪代码,或者更好的Python.我正在尝试为Python IRC机器人实现速率限制队列,它部分工作,但如果有人触发的消息少于限制(例如,速率限制是每8秒5条消息,而此人只触发4条消息),并且下一个触发器超过8秒(例如,16秒之后),机器人发送消息,但是队列变满并且机器人等待8秒,即使自8秒时间段已经过去也不需要它.
假设我有一个方法允许更新DB中的某些日期:
def updateLastConsultationDate(userId: String): Unit = ???
Run Code Online (Sandbox Code Playgroud)
如何轻松地对该方法进行节流/去抖动,以使每个用户每小时运行不超过一次.
我想要最简单的解决方案,而不是基于任何事件总线,actor lib或持久层.我想要一个内存解决方案(我知道风险).
我已经看到了基于Akka Throttler的 Scala限制解决方案,但这对我来说真的很难开始使用actor来进行限制方法调用.有没有一个非常简单的方法来做到这一点?
编辑:因为它似乎不够清晰,这里是我想要的直观表示,用JS实现.正如您所看到的,限制可能不仅仅是过滤后续调用,还可以推迟调用(也称为trailing eventsjs/lodash/underscore).我正在寻找的解决方案不能仅基于纯同步代码.