当前位置: 首页 > 知识库问答 >
问题:

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

司空炯
2023-03-14

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

没什么大不了的,因为它基本上是一个标准安装。我有一个restful API,当使用jeter将POST发送到我们的endpoint时,实体被填充,然后我们在上面触发所有规则。当在jeter中使用多个线程时,我可以清楚地看到多线程不起作用。

从留档:

可以使用以下选项之一启用多线程求值:启用多线程求值系统属性:drools。多线程评估=真

以编程方式创建KIE库时启用多线程计算:

KieServices ks = KieServices.Factory.get();
KieBaseConfiguration kieBaseConf = ks.newKieBaseConfiguration();
kieBaseConf.setOption(MultithreadEvaluationOption.YES);
KieBase kieBase = kieContainer.newKieBase(kieBaseConf);

尝试将drools.multithreaded评估=true添加到application.properties.未解决问题。

尝试了@Bean中的第二个方法,但是没有使用kieBase,也没有解决问题。目前不确定简单地实例化KieBase是否就足够了。这应该去哪里?该方法返回kContainer.newKieSession(),因此不确定如何判断kieBaseConf.set选项(MultithreadEvalue ationOption. YES)是否真的做了什么。

尝试在fireAllRules之前创建新的kieSession,但失败。该服务是“自动连接到kieSession”Bean的。

第一次使用整个技术堆栈,所以谢谢你慢慢来。

太长别读需要一步一步的说明如何设置drools.multithread评估为真。


共有1个答案

井浩思
2023-03-14

根据文档,Drools希望在应用程序中设置系统属性时设置它。属性,我假设它与Spring相关?尝试通过以下方式之一进行设置:

>

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

    java-Ddrools.multithread评估

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

    <代码>系统。setProperty(“drools.multithreadEvaluation”,“true”)

  •  类似资料:
    • 问题内容: 我已经成功设置了Spring Batch项目教程。我真的很想知道是否有可能在“ Spring级别”使它成为多线程的。 我想要的基本思想是列出任务或任务步骤的列表,并让它们由独立的线程拾取和处理,理想情况下是从限制为“ n”个线程的池中进行。 这可能吗?如果是这样,怎么办?有人可以引导我到我目前所在的位置吗? 简单的项目我是从本教程在这里。它基本上具有不同的任务,这些任务将消息打印到屏幕

    • 问题内容: 我写一个简单的应用程序,它涉及三个线程: ,和。 是 生成* 并馈给的生成器类。 * 消耗了 计算平均值。我的号码已经使用该饲料用。用途吃起来。 问题是:: 如果平均值超过中的1E5 ,我想表示停止产生数字。我有一个在需要被打开。我该如何实现? PS:该代码将永久运行,而无需在控制台上打印任何内容,我至今仍未弄清原因!! 问题答案: 您可以使用并将它传递给两个线程,原子类型是可访问的,

    • 本文向大家介绍Linux多线程锁属性设置方法,包括了Linux多线程锁属性设置方法的使用技巧和注意事项,需要的朋友参考一下 互斥锁是Linux下多线程资源保护的常用手段,但是在时序复杂的情况下,很容易会出现死锁的情况。 可以通过设置锁的属性,避免同一条线程重复上锁导致死锁的问题。 通过int pthread_mutexattr_settype(pthread_mutexattr_t *attr,

    • 多线程。在这种模式下,SQLite可以安全地由多个线程使用,前提是在两个或多个线程中不同时使用单个数据库连接。 序列化。在序列化模式下,SQLite可以安全地由多个线程使用,不受限制。

    • 我有以下的要求要设计。 有多个作业要完成。每个作业都有一个作业id和一个系统id。作业id是唯一的,但同一系统id可能有多个作业 应顺序处理给定系统id的作业 其中某些作业可能处于等待状态,如果处于等待状态,则在x秒/分钟之前不应重新尝试返回 系统约束 唯一系统ID的数目可以是lakhs 每个系统ID的作业数可以是lakh 我曾考虑过使用kafka,但如果一个系统被阻塞,那么该分区中不同系统的所有

    • 3.5-为什么当我移动窗口或调整窗口大小时,我的应用程序会冻结? 窗口事件循环会被某些操作阻止,如拖动窗口或调整窗口大小,或打开窗口菜单。这是Windows设计的一部分,不能被GLFW更改。如果您希望在这些操作期间继续呈现,您应该从辅助线程呈现。 --http://www.glfw.org/faq.html