我是在Java中使用Esper事件流引擎的新手。情景是事件以POJO的形式出現。他們有一個我想過濾的字段。過濾後的值將隨時間變化。每次發生更改時,我寧願不刪除並插入新的語句。使用Esper,我該如何執行事件的動態過濾?
實施例:
事件被稱爲 'MyEvent',並具有字段 '源'。值可以是「家」,「工作」或「學校」之一。 Web服務允許用戶更改值「源」他們感興趣的 英超聲明看起來像
select * from MyEvent where source in ('home', 'school')
因此,在任何時候,「學校」也被刪除,衝擊必須儘可能快地反映出來。問題是,如何最好地做到這一點?由於更新生效之間的延遲,我排除了緩存的數據庫調用。
思路是:
1)有一個叫做 'SourcesOfInterest' 流與 '源' 類型列表的領域,並更改該語句是:
select * from MyEvent where source in (SourcesOfInterest.win:length(1).sources)
的web服務,鑲「SourcesOfInterest '進入這個流中的事件,只有最新的纔會被查看。 甚至不知道語法是否正確。
2)讓語句引用一個運行時變量。那麼該語句將是:
select * from MyEvent where source in (mySourcesVariable)
Web服務將調用
EPRuntime.setVariableValue("mySourcesVariable", myArrayOfSources)
是否還有其他選擇?性能問題的任何這些?