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

流模式下的口水:卡拉夫的OutOfMemory

张伯寅
2023-03-14

我的DRL文件:

package com.sample.eventmanagement;

import com.sample.eventmanagement.CheckInEvent    
import com.sample.eventmanagement.LateCheckInEvent     

global java.util.concurrent.BlockingQueue lateCheckInEntitiesQueue;    
global java.util.concurrent.BlockingQueue clearingLateCheckInEntitiesQueue;    

declare CheckInEvent    
 @role(event)    
 serialNum : String    
 currentCheckInTime : long    
end    

declare LateCheckInEvent    
 @role(event)    
 @expires( 120m )    
 serialNum : String    
 currentCheckInTime : long    
end    

rule "Raising an Late Check-In Alert"    
when     
    $s1: CheckInEvent( $serialNum : serialNum, $currentCheckInTime: currentCheckInTime ) from entry-point apCheckInStream    
    not( CheckInEvent( serialNum == $serialNum, currentCheckInTime > $currentCheckInTime, this after[ 1s, 360s ] $s1 ) from entry-point apCheckInStream)     
then     
    lateCheckInEntitiesQueue.add($s1);    
end    

rule "Clearing Late Check-In Alert"    
when     
    $s1: LateCheckInEvent( $serialNum : serialNum, $currentCheckInTime: currentCheckInTime ) from entry-point lateApCheckInStream    
    CheckInEvent( serialNum == $serialNum, currentCheckInTime > $currentCheckInTime) from entry-point clearingApCheckInStream    
then     
    System.out.println("Clearing late checkin " + $s1);    
    clearingLateCheckInEntitiesQueue.add($s1.getSerialNum());    
end

我在linux vm的karaf 2.4.3中以流模式运行drools,每5分钟报告10k entity CheckineEvent pumping的内存不足。

我的用例是检测由序列号标识的实体的latecheckin事件。在检测到延迟签入事件时,将该事件泵送到另一个规则并在2小时内等待该实体再次正确签入。如果发生,则触发规则2。

我写查询的方式有什么问题吗?

共有1个答案

籍星汉
2023-03-14

事实将保留在您的会话中(记忆中),直到:

  • 手动收回它们:使用

您的场景似乎不属于这三种情况中的任何一种。

**顺便说一下,我在您的DRL文件中没有看到任何查询。

希望有帮助,

 类似资料:
  • 我通过执行以下命令,在我的两个Apache Karaf 2.2.7实例中安装了hawtio: 问题是我有四个linux机器和四个Karaf实例,所以我在每个机器上都安装了它。除了hawtio控制台端口不同之外,一切都很好。我知道默认情况下它应该在< code>8181上启动。在我的两个服务器上,它开始于:< code>8182,在另外两个服务器上:< code>7181。我不确定,也许< code

  • 是Spring启动应用程序支持Kafka没有动物园管理员。 我可以在牛皮纸模式下设置Kafka,而无需zookeeper。现在我需要知道我必须在Spring启动应用程序中设置什么才能在牛皮纸模式下与Kafka连接。 我用谷歌搜索了一下,在没有动物园管理员的情况下,用kafka在卡夫模式下运行spring-boot应用程序,但我找不到任何示例。 你能知道如何将卡夫模式的kafka与spring bo

  • 我正在从log4j-slf4j-impl 2.12.0升级到2.17.1。在我之前的代码中,除了 现在我已经升级到2.17.1,我得到了以下错误: org . Apache . Felix . resolver . reason . reason异常:无法解析org . Apache . logging . log4j . slf4j-impl/2 . 17 . 1:缺少需求[org . Apac

  • 设置 多个独立的源系统将AVRO事件推送到Kafka主题中。KafkaS3接收器连接器从本主题读取AVRO事件,并写入S3拼花格式。 问题 我们的架构注册表中的 AVRO 架构不符合标准。例如,源系统中的十进制字段在架构注册表中具有基类型字符串和逻辑类型十进制。AVRO 中不允许这些类型的组合(十进制逻辑类型必须始终具有基本类型修复/字节。 这些不正确的AVRO模式导致不正确的拼花文件模式。E、

  • 我试图在Karaf 3.0.0-RC1中使用H2数据库加载来获取Scala库,但我遇到了这个错误 有人知道我需要在POM和/或功能中添加什么吗。xml来让它工作吗? 谢谢,鲍勃

  • 我有以下设置: Karaf 4.0.2部署在EC2实例的docker中。 我在Karaf安装了jolokia功能。 部署后,捆绑包开始正常,jolokia代理正在监听8181端口。 但是,当我在本地启动Karaf并想要连接到这个远程jolokia代理时,我会收到屏幕截图中显示的错误。身份验证弹出窗口出现后弹出错误。 这是旋度响应: 有人知道可能是什么问题吗?