Is it possible in Esper to manage timestamp from an input. The file I use looks like this:
143 Sat Sep 12 14:43:05 CEST 2009
149 Sat Sep 12 14:43:06 CEST 2009
149 Sat Sep 12 14:43:09 CEST 2009
143 Sat Sep 12 14:43:10 CEST 2009
149 Sat Sep 12 14:43:12 CEST 2009
143 Sat Sep 12 14:43:15 CEST 2009
149 Sat Sep 12 14:43:15 CEST 2009
149 Sat Sep 12 14:43:18 CEST 2009
143 Sat Sep 12 14:43:20 CEST 2009
149 Sat Sep 12 14:43:21 CEST 2009
How do configure Esper so it is possible to use the
select * from Timer.win:time_batch(5 sec)
such that I get results like this:
143 Sat Sep 12 14:43:05 CEST 2009
149 Sat Sep 12 14:43:06 CEST 2009
149 Sat Sep 12 14:43:09 CEST 2009
143 Sat Sep 12 14:43:10 CEST 2009
EDIT:
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false);
runtime.sendEvent(new CurrentTimeEvent(0));
engine.getEPAdministrator().createEPL("create context NineToFive start (0, 9, *, *, *) end (0, 17, *, *, *)");
Then I parse my dataset and send events like the answer below said:
long eventTime = userByDate.get(i).getSdf().getTime();
runtime.sendEvent(new CurrentTimeSpanEvent( eventTime ));
runtime.sendEvent(new Event());
Steps are, get an engine instance from EPServiceProviderManager that uses external timer:
Configuration config = new Configuration();
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false);
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);
After you have an engine instance, call this. This sets the start time to zero.
epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0));
Then create your EPL statement.
Then, for each line, parse the date, parse the event data, advance time, and send the event like this:
long eventTime = parseDate(...);
SomeEvent someEvent = parseEvent(...);
epService.getEPRuntime().sendEvent(new CurrentTimeSpanEvent(eventTime));
epService.getEPRuntime().sendEvent(someEvent);