是否可以在Esper中管理输入的时间戳。我使用的文件如下所示:
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
如何配置Esper以便可以使用
select * from Timer.win:time_batch(5 sec)
这样我得到的结果如下:
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
编辑:
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false);
runtime.sendEvent(new CurrentTimeEvent(0));
engine.getEPAdministrator().createEPL("create context NineToFive start (0, 9, *, *, *) end (0, 17, *, *, *)");
然后我解析我的数据集并发送如下答案所说的事件:
long eventTime = userByDate.get(i).getSdf().getTime();
runtime.sendEvent(new CurrentTimeSpanEvent( eventTime ));
runtime.sendEvent(new Event());
答案 0 :(得分:0)
步骤是,从EPServiceProviderManager获取一个使用外部计时器的引擎实例:
Configuration config = new Configuration();
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false);
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);
拥有引擎实例后,请调用此方法。这会将开始时间设置为零。
epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0));
然后创建您的EPL声明。
然后,对于每一行,解析日期,解析事件数据,提前时间,并发送如下事件:
long eventTime = parseDate(...);
SomeEvent someEvent = parseEvent(...);
epService.getEPRuntime().sendEvent(new CurrentTimeSpanEvent(eventTime));
epService.getEPRuntime().sendEvent(someEvent);