Sha*_*ank 5 java rule-engine drools business-rules kie
我正在使用单线程 drools 项目作为第一匹配策略/条件评估引擎。我正在使用以下代码从 kieContainer 获取 kieSession,并根据条件评估谓词。
KieContainer currentContainer = kieContainer.get();
StatelessKieSession newKIESession = currentContainer.newStatelessKieSession();
newKieSession.execute(predicate);
Run Code Online (Sandbox Code Playgroud)
对于给定的请求,评估大约需要 10 毫秒。但是,当我使用 10 个线程时,为了提高性能,这些请求中的每一个都开始花费大约 100 毫秒,有效地为我提供了相同的性能和更多的线程。
我应该为每个处理线程生成一个新容器,而不是从现有容器生成一个新会话吗?
//SEE LAST LINE BELOW
KieServices ks = KieServices.Factory.get();
KieRepository kr = ks.getRepository();
KieFileSystem kfs = ks.newKieFileSystem();
byte[] drlAsBytes = retrieveDRLResource();
kfs.write(ResourceFactory.newByteArrayResource(drlAsBytes).setTargetPath(DROOLS_DEFAULT_PATH));
KieBuilder kb = ks.newKieBuilder(kfs);
kb.buildAll(); // kieModule is automatically deployed to KieRepository if successfully built.
if (kb.getResults().hasMessages(Level.ERROR)) {
throw new PolicyServiceException("Build Errors:\n" + kb.getResults().toString());
}
//******* SHOULD THIS BE DONE FOR EACH PROCESSING THREAD? ******
KieContainer newkieContainer = ks.newKieContainer(kr.getDefaultReleaseId());
Run Code Online (Sandbox Code Playgroud)我正在使用以下版本的 DROOLS。
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>7.2.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1644 次 |
最近记录: |