Drools:如何设置多线程(multithreadEvaluation)7.34.0 -Java Maven Spring

问题描述 投票:0回答:1

我看到默认情况下multithreadEvaluation设置为false。我有一个使用电子表格决策表的简单Maven Spring Drools实现。

没什么太大的作用,因为它基本上是标准安装。我有一个宁静的API,当使用jmeter将其发布到端点时,将填充该实体,然后在其上触发所有规则。在jmeter中使用多个线程时,我可以清楚地看到多线程无法正常工作。

摘自文档:

您可以使用以下选项之一启用多线程评估:启用多线程评估系统属性:drools.multithreadEvaluation=true

以编程方式创建KIE基础时启用多线程评估:

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是否足够。这应该去哪里?该方法返回kContainer.newKieSession(),所以不确定如何判断kieBaseConf.setOption(MultithreadEvaluationOption.YES)是否实际上做了什么。

在fireAllRules之前尝试创建新的kieSession并失败。该服务已@Autowired到kieSession @Bean。

第一次使用整个技术堆栈,因此感谢您慢慢来。

TL; DR需要逐步说明如何将drools.multithreadEvaluation设置为true。

java multithreading spring-boot maven drools
1个回答
0
投票

根据文档,Drools期望在application.properties中设置System属性,而我认为这与Spring相关?尝试通过以下方式之一进行设置:

  1. 启动应用程序时,在命令行中添加“ -Ddrools.multithreadEvaluation”,例如:

    java -Ddrools.multithreadEvaluation <the rest of parameters>

  2. 或在任何Drools类被调用之前,在初始化初期以编程方式在应用程序启动时进行设置:

    System.setProperty("drools.multithreadEvaluation", "true");

© www.soinside.com 2019 - 2024. All rights reserved.