Drools7多线程,高并发测试总结

实际开发过程中,规则一般都会作为一个平台出现,例如常见的电商促销规则,金融的风险控制,反欺诈,医疗的合理用药等,处于一个高并发的阶段,下面小编就以多线程方式模拟高并发方式进行测试总结,下面的例子都是通过KieHelper 读取String类型方式,动态规则,在小编之前的研究过程中发现KieHelper效果是比较低的,因为它做的事是动态规则方式6 7方式的整合动作,前面的文章是有提过的,下面就以规则的简单例子做为研究 请看相关总结。

讲到多线程,就不得不多提一个概念,Multithreaded rule engine,在官方文档2.3.1.2中,介绍多线程规则引擎,官方也明确说明该功能还处于实验阶段,

该功能默认处于关闭状态,在KieBaseConfiguration中设置,该功能由KieServices提供,我们看一下官方给出的代码。注:这是在使用Kmodule.xml或在代码中使用KieServices时的赋值方式,使用KieHelper则不需要。

通过KieServices 创建KieBaseConfiguration,通过命名的方式打开,创建KieBean时导入。

或者通过系统属性drools.multithreadEvaluation = true

注:目前这样的多线程规则不支持  queries、salience、agenda-group,如果这些属性存在规则中,则会自动切换回单线程模式,按照官方的说法,在编译过程将发出警告信息,还有一些特殊的情况,就是不使用自定义的排序,规则也有一些默认的排序,就会出来可能会执行myRuleFile1也有可能会执行myRuleFile2,有可能执行一部分myRuleFile1与myRuleFile2,总而言之,规则整个执行下来的过程之和,符合调用规则的次数。

同 KieHelper 同一个Kiesession有状态

不同 KieHelper 不同Kiesession有状态

不同 KieHelper

 同 KieHelper 同一个StatelessKieSession无状态

同 KieHelper 不同一个StatlelessKiesession无状态

不同 KieHelper 不同StatelessKiesession无状态

不同 KieHelper 不同Kiesession有状态

你可能感兴趣的:(Drools7多线程,高并发测试总结)