比方說,我有一個允許更新數據庫的一些最新的方法:油門或反跳的方法調用
def updateLastConsultationDate(userId: String): Unit = ???
我怎樣才能扼制這種方法極易使它不會被運行一次以上/防抖動一小時每個用戶。
我想要最簡單的解決方案,而不是基於任何事件總線,演員庫或持久層。我想要一個內存中的解決方案(我知道風險)。
我已經看到基於Akka Throttler的Scala中的節流解決方案,但是這對我來說真的很矯枉過正,只是爲了調節方法調用而開始使用actor。是不是有一個非常簡單的方法來做到這一點?
編輯:因爲它似乎不夠清楚,這裏是我想要的,在JS中實現的visual representation。正如你所看到的,節流不僅可以用於過濾後續的調用,還可以推遲調用(也稱爲js/lodash/underscore中的trailing events
)。我正在尋找的解決方案不能僅基於純同步代碼。
你需要在你的問題更具體。你的意思是說,在調用數據庫訪問方法時,可能會或可能不會執行實際的數據庫操作,這是基於自上次調用同一用戶參數以來所經過的時間?或者,你的意思是在後臺定期執行數據庫操作?難道不要使用任何額外的庫嗎? – Haspemulator
@Haspemulator我覺得我很明確,如果你想要一個視覺插圖見http://jsfiddle.net/wn1af0te/。如果在同一小時內調用了遏制方法兩次,則應該忽略第二個調用(或者最終推遲,我可以使用ExecutionContext) –
受調用的調用是否應該稍後排隊或被忽略?那麼額外的庫怎麼樣? – Haspemulator