我需要跟蹤特定時間範圍內的某些事件,並在事件數量達到特定數量時採取行動。更詳細地說,我連接到外部服務並提交確認狀態等於CONF或FAIL的請求。我需要能夠監視響應以檢測在給定時間範圍內是否有不尋常的失敗次數,例如, > 3在最後5秒內失敗,以便我可以檢查錯誤並採取相應措施。我可以選擇檢查連續3次失敗,但我更喜歡基於時間的方法。Java收集過期條目
我一直在測試番石榴閱讀本post後的CacheLoader
但同時條目(我只存儲FAIL事件)在Cache中出現的呼叫到期的預期,以size()
(以確定失敗的次數)亦包括過期的條目。這似乎是它應該如何工作根據documentation,如果我沒有誤解的事情?有沒有辦法從緩存中獲取「活動」事件的數量?
我猜想另一種解決方案是使用像Esper這樣的CEP框架,但對於我的簡單需求來說,它看起來像是矯枉過正和麻煩。有沒有人有完全不同的方法來建議,以促進我的要求?由於
你看到什麼'EhCache'緩存框架?我建議看看它。我認爲解決你的要求。請參閱http://ehcache.org/ – MJM 2012-02-23 13:49:38
我想我不明白這個問題。發送到外部服務。如果錯誤響應,則添加到帶有時間戳的隊列中。刪除太舊的項目。如果列表長度>閾值,則執行一些操作。如果這種方法證明太慢,那麼(並且只有這樣)才能優化。一旦優化成爲可以使用整數圖,其中地圖的關鍵是幾秒鐘的時間。當你添加一個錯誤時(使用秒作爲鍵,遞增計數),你確切地知道還有哪些其他鍵可以相加。 – 2012-02-23 14:03:56
@TonyEnnis我不明白常規隊列如何解決我的問題。我需要有某種迭代過程來監視和刪除不能成爲所需解決方案的條目。 – hgus1294 2012-02-23 16:26:05