[英]Stateful session memory management in Drools
在 Drools 中使用“有狀態會話”時,有一個關於 memory 管理的一般性問題。 對於上下文,我特別希望在“流”模式下使用 ksession 以及fireUntilHalt()
來處理無限的 stream 事件。 每個事件都有時間戳,但我主要使用基於長度的 windows 符號(即window:length()
)和用於決策的from accumulate
語法編寫規則。
盡管關於 memory 管理在這種情況下的工作方式,文檔有點含糊。 文檔建議使用時間運算符,引擎可以自動刪除任何不再匹配的事實/事件。 但是,這是否也適用於僅使用window:length()
的規則? 或者我的系統是否需要手動刪除不再適用的事件,以防止運行 OOM?
window:time()
計算到期時間,因此適用於自動刪除。 但是, window:length()
不會計算到期時間,因此事件將被保留。
您可以通過我的示例確認行為: https://github.com/tkobayas/kiegroup-examples/tree/master/Ex-cep-window-length-8.32
您需要明確刪除它們或設置@expires
(如果您的應用程序可以指定隨時間到期)以避免 OOME。
謝謝指點,文檔說的不清楚。 我已經提交了一份 JIRA 文檔來解釋它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.