2017-02-02 1 views
0

Ist es in Esper möglich, Zeitstempel von einem Eingang zu verwalten. Die Datei Ich benutze sieht wie folgt aus:Wie lege ich Zeit fest, wenn ich Zeitstempel aus einer Datei verwende?

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 

Wie Esper konfiguriere so ist es möglich, die

select * from Timer.win:time_batch(5 sec) 

so zu verwenden, dass ich Ergebnisse wie diese:

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, *, *, *)"); 

Dann parse ich meine da taset und senden Ereignisse wie die Antwort, sagte unten:

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

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

Antwort

0

Schritte sind, eine Motor Instanz von EPServiceProviderManager erhalten, die externen Timer verwendet:

Configuration config = new Configuration(); 
config.getEngineDefaults().getThreading().setInternalTimerEnabled(false); 
EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 

Nachdem Sie eine Engine-Instanz haben, dies nennen. Dies setzt die Startzeit auf Null.

epService.getEPRuntime().sendEvent(new CurrentTimeEvent(0)); 

Dann erstellen Sie Ihre EPL-Anweisung.

Dann wird für jede Zeile, analysieren Sie das Datum, die Ereignisdaten, Vorlaufzeit analysieren, und die Veranstaltung wie diese an:

long eventTime = parseDate(...); 
SomeEvent someEvent = parseEvent(...); 
epService.getEPRuntime().sendEvent(new CurrentTimeSpanEvent(eventTime)); 
epService.getEPRuntime().sendEvent(someEvent); 
+0

Danke, habe es funktioniert. – sweep

+0

Ich bemerkte, wenn Kontexte verwendet werden, antwortet es immer noch auf den internen Timer statt auf den externen. Selbst wenn ich es ausgeschaltet habe. Vielleicht etwas mit meinem Setup. – sweep

+0

Auch wenn ich die Zeit vor der Zeit festlege, erkläre ich meinen Kontext. Es gibt eine Ausgabe, aber nicht die richtige. – sweep

Verwandte Themen