2010-01-26 2 views
3

파일에서 읽은 스트림을 피드하는 비 실시간 Esper 구성이 있습니다. 전체 스트림에 대한 통계를 계산하고 맨 끝에 하나의 값을 출력하는 표현식을 만들려고합니다. Esper는 예를 들어 뷰를 X 초마다 출력하도록하는 의미론을 가지고 있지만 피드가 더 이상 필요 없다는 것을 알 때 출력을 "플러시"하도록 뷰 또는 엔진에 요청하는 의미가 있습니다.Esper에서 강제 출력

답변

8

적어도 하나의 방법은 변수 트리거와 함께 출력 절을 사용하는 것입니다.

표현은 다음과 같습니다

select count(*) as totalCount from events output last when OutputSummary = true 

OutputSummary 변수는과 같이 초기화 할 것입니다 : 당신이 플러시 할 준비가되면, 사실 그래서 등에 변수를 설정

epConfiguration.addVariable("OutputSummary", Boolean.class, "false"); 

:

epRuntime.setVariableValue("OutputSummary", true); 
long currentTime = epService.getEPRuntime().getCurrentTime(); 
epRuntime.sendEvent(new CurrentTimeEvent(currentTime)); 

강제로 표현식을 평가하려면 다른 시간 이벤트를 보내야합니다.

0

출력은 매 60 초에서 필요한 경우 다음 표현은 다음과 같습니다 출력이 모든 10000 개 행사에서 필요로하는 경우

select emplyee_id from employees output snapshot every 60 sec 

및 그 표현은 다음과 같습니다

select emplyee_id from employees output snapshot every 10000 events