2011-10-19 68 views
1

我有一個問題,創建新的drools StatefulKnowledgeSession實例是CPU密集型的。有一個老的討厭的鏈接here。我不確定我會如何解決它,所以我想我會創建一個池。到目前爲止,我完全無法確定它們是否可重用。我知道在同時有兩個線程運行規則的意義上,它們不是多線程安全的,但是在最後一次使用調用dispose()之後,我可以在線後的新線程中重用會話嗎?Drools重用StatefulKnowledgeSession?

回答

3

我最終創建了一個KnowledgeSessionConfiguration,並在每次創建KnowledgeSession時重複使用它。無論出於何種原因(顯然是一個大類路徑),創建配置對我來說都是非常昂貴的,就像我鏈接的文章一樣。我不確定一次創建KnowledgeSessionConfiguration並重用它會導致什麼損失。一切似乎都正常。

1

如果您在單獨的上下文中創建知識庫,那麼創建一個有狀態知識系統並不昂貴。每次需要會話時,您只需避免編譯規則(builder.add())。您可以爲每個請求創建一個新的會話並進行處理以避免內存泄漏,我認爲您將很好地創建會話而不是嘗試重用它們。 Cheers