Слюни повторно используют StatefulKnowledgeSession? - PullRequest
1 голос
/ 19 октября 2011

У меня проблема в том, что создание новых слюней экземпляров StatefulKnowledgeSession требует значительных ресурсов процессора. Есть старая ссылка, которая говорит об этом здесь . Я не уверен, как бы я обойти это, поэтому я решил создать их пул. Пока я совершенно не могу выяснить, можно ли их многократно использовать или нет. Я знаю, что они не являются многопоточными безопасными в смысле одновременного выполнения правил для двух потоков, но могу ли я повторно использовать сеанс в новом потоке позже по строке после последнего вызова dispose ()?

Ответы [ 2 ]

3 голосов
/ 25 октября 2011

В итоге я создал единую конфигурацию KnowledgeSessionConfiguration и использовал ее при каждом создании KnowledgeSession. По какой-то причине (очевидно, большой путь к классам) создание конфигурации было для меня чрезвычайно дорогим, как и статья, которую я связал. Я не уверен, что теряю, создавая KnowledgeSessionConfiguration только один раз и используя его повторно. Кажется, все ведет себя нормально.

1 голос
/ 20 октября 2011

Если вы создаете базу знаний в отдельном контексте, то создание StatefulKnowledgeSessions не требует больших затрат. Вам нужно только избегать компиляции правил каждый раз, когда вам нужен сеанс (builder.add ()). Вы можете создать новый сеанс для каждого запроса и утилизировать его, чтобы избежать утечек памяти. Я думаю, что вы будете хорошо создавать сеансы вместо того, чтобы пытаться использовать их повторно. Приветствия

...