Я вижу, что multithreadEvaluation по умолчанию имеет значение false. У меня есть простая реализация Maven Spring Drools с использованием таблиц решений электронных таблиц.
В этом нет ничего особенного, поскольку это в основном стандартная установка. У меня есть спокойный API, и при использовании jmeter для POST в нашей конечной точке, объект заполняется, а затем мы запускаем все правила для него. При использовании нескольких потоков в jmeter я ясно вижу, что многопоточность не работает.
Из документации:
Вы можете включить многопоточную оценку, используя один из следующих параметров: Включить свойство многопоточной системы оценки: drools.multithreadEvaluation=true
Включить многопоточную оценку при программном создании базы K IE:
KieServices ks = KieServices.Factory.get();
KieBaseConfiguration kieBaseConf = ks.newKieBaseConfiguration();
kieBaseConf.setOption(MultithreadEvaluationOption.YES);
KieBase kieBase = kieContainer.newKieBase(kieBaseConf);
Попытка добавления drools.multithreadedEvaluation=true
в application.properties. Не удалось решить проблему.
Пробовал второй метод в kieSession()
@Bean, но kieBase не используется и не решил проблему. В настоящее время не уверены, достаточно ли просто создания экземпляра KieBase. Где это go? Метод возвращает kContainer.newKieSession (), поэтому не уверен, как определить, действительно ли kieBaseConf.setOption (MultithreadEvaluationOption.YES) действительно что-то сделал.
Попытался создать новый kieSession до fireAllRules. Этот сервис @Autowired к kieSession @ Bean.
Первый раз, когда вы работаете буквально со всем этим стеком, так что спасибо, что взяли его медленно.
TL; DR Нужны пошаговые инструкции, как установите для drools.multithreadEvaluation значение true.