Моего DRL файл:Drools в потоковом режиме: OutOfMemory в karaf
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
Я бег Drools в потоковом режиме в karaf 2.4.3 в Linux VM, сообщает из памяти 10k объекта checkinevent перекачиваемого каждые 5 минут ,
Мой случай использования обнаруживает latecheckinevent для объекта, идентифицированного серийным номером. В последнем событии проверки произошла перекачка этого события в другое правило и ожидание правильной проверки с этого объекта в течение 2 часов. Если это произойдет, будет запущено правило 2.
Есть ли проблемы в том, как у меня есть письменный запрос. ?
Я добавил @expires для CheckInEvent, теперь нет OutOfMemory. Вместо того, чтобы упоминать это как правило, я ошибался как запрос. – Abirami