2017-02-02 8 views
0

Возможно ли в 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 

Как настроить Эспер, так что можно использовать

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 

EDIT:

config.getEngineDefaults().getThreading().setInternalTimerEnabled(false); 

runtime.sendEvent(new CurrentTimeEvent(0)); 
engine.getEPAdministrator().createEPL("create context NineToFive start (0, 9, *, *, *) end (0, 17, *, *, *)"); 

Затем я разбираю мою да taset и отправлять события, как ниже ответ сказал:

long eventTime = userByDate.get(i).getSdf().getTime(); 

runtime.sendEvent(new CurrentTimeSpanEvent(eventTime)); 
runtime.sendEvent(new Event()); 

ответ

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); 
+0

Спасибо, получил это работает. – sweep

+0

Я заметил, что при использовании контекстов он по-прежнему отвечает на внутренний таймер вместо внешнего. Даже когда я отключил его. Может быть, что-то с моей настройкой. – sweep

+0

Даже при настройке времени до того, как я объявлю свой контекст. Он дает результат, но не правильный. – sweep