Я использую Drools 6.2.Final Fusion CEP и установил событие @expires (1d), но через несколько дней обнаружил, что память снижается. Каждый день суммарно данных о событии не много. Сомневаюсь, что событие в рабочей памяти после истечения срока действия не ясно. Поэтому хочу кое-что подтвердить:
1. Режим потока Fusion CEP. Сеанс с сохранением состояния должен dispose() после fireAllRules()? В моем коде ksession будет создавать только один раз в методе инициализации, а затем использовать его для вставки события и запуска всех правил, но я никогда не использую метод dispose() после пожара. Меня беспокоит не то, что я не использовал метод, из-за которого событие осталось в памяти.
2.Событие после истечения срока автоматически удаляется из памяти? Боюсь, что событие не очищается должным образом, в результате чего память снижается.
@org.kie.api.definition.type.Role(org.kie.api.definition.type.Role.Type.EVENT)
@org.kie.api.definition.type.TypeSafe(true)
@org.kie.api.definition.type.Timestamp("beginTime")
@org.kie.api.definition.type.Expires("1d")
public class Event{
private Long beginTime;
// ...other fields, set and get method..
}
--
poublic void initKsession()throws Exception{
KieServices kieServices = KieServices.Factory.get();
KieBaseConfiguration config = KieServices.Factory.get().newKieBaseConfiguration();
config.setOption(EventProcessingOption.STREAM);
ReleaseId releaseId = kieServices.newReleaseId(groupId, artifactId, version);
KieContainer kContainer = kieServices.newKieContainer(releaseId);
KieScanner kScanner = kieServices.newKieScanner(kContainer);
kSession = kContainer.newKieSession(kessionName);
kScanner.start(10000L);
}
--
public Result processRules(Event event) {
// ....
try {
kSession.insert(event);
kSession.fireAllRules();
} catch (Exception e) {
log.error("fail",e);
}
// ....
}
dispose
в StatefulKieSession, если только вы не завершили использование этого сеанса — это самая последняя очистка. - Используйте прослушиватель, чтобы узнать, как вводятся и удаляются факты вашего события и как увеличивается их количество. Затем, зная это, пришло время обсудить, как отбрасывать устаревшие/устаревшие события. - person laune   schedule 16.05.2015