开发者

Forcing output in Esper

开发者 https://www.devze.com 2022-12-18 17:16 出处:网络
I have a non real time Esper configuration where I feed a stream that I read from a file. I\'m trying to create an expression that computes a statistic over the entire stream and outputs one value at

I have a non real time Esper configuration where I feed a stream that I read from a file. I'm trying to create an expression that computes a statistic over the entire stream and outputs one value at the very end. Esper has semantics for forcing a view to output every X seconds, for instance, but is there a semantic for asking the view or the engine to "flush" the out开发者_StackOverflow中文版put when you know there are no more events to feed.


Turns out that at least one way to do this is to use the output clause with a variable trigger.

The expression would be:

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

The OutputSummary variable would be initialized like so:

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

When you're ready to flush, set the variable to true like so:

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

It's necessary to send another time event to force the expression to evaluate.


When output requires at every 60 sec then the expression would be:

select emplyee_id from employees output snapshot every 60 sec

and when the output requires at every 10000 events then the expression would be:

select emplyee_id from employees output snapshot every 10000 events
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号