1
10 초마다 패킷을 보내는 데이터 스트림이 있습니다. 장치가 다운되었을 때 마지막 패킷을받은 이벤트를 생성하는 Esper에 대한 쿼리가 필요합니다. 나는 데이터가 30 초를 위해 도착하지 않는 경우 장치가 분실 가정하지만 장치가 스팸 메일을 여기Esper는 스팸없이 데이터가 손실되었을 때 알림을받습니다.
을 피하기 위해 다시 올 때까지 나는 단지 1마다 5 시간을 통지받을 필요가 나의 기본 쿼리입니다 :
select * from pattern [every tick=MyInputStream-> (timer:interval(30 sec) and not MyInputStream)] output every 5 hours
그러나 아무튼 't 작업, 첫 번째 이벤트 후에 내가 가지고 :
Event:
-> {tick=BeanEventBean eventType=BeanEventType name=MyInputStream clazz=mypackage.MyInputStream bean=MyInputStream [field1=1, field2=2]}
Event:
ERROR - Unexpected exception invoking listener update method on listener class 'GenericListener' : NullPointerException : null
java.lang.NullPointerException at cep.listener.GenericListener.update(GenericListener.java:11)
at com.espertech.esper.core.service.StatementResultServiceImpl.dispatchInternal(StatementResultServiceImpl.java:381)
at com.espertech.esper.core.service.StatementResultServiceImpl.processDispatch(StatementResultServiceImpl.java:256)
at com.espertech.esper.core.service.StatementResultServiceImpl.execute(StatementResultServiceImpl.java:242)
at com.espertech.esper.core.service.UpdateDispatchViewBase.execute(UpdateDispatchViewBase.java:75)
at com.espertech.esper.core.service.UpdateDispatchFutureSpin.execute(UpdateDispatchFutureSpin.java:85)
at com.espertech.esper.dispatch.DispatchServiceImpl.dispatchFromQueue(DispatchServiceImpl.java:52)
at com.espertech.esper.dispatch.DispatchServiceImpl.dispatch(DispatchServiceImpl.java:31)
at com.espertech.esper.core.service.EPRuntimeImpl.dispatch(EPRuntimeImpl.java:1340)
at com.espertech.esper.core.service.EPRuntimeImpl.processTimeEvent(EPRuntimeImpl.java:540)
at com.espertech.esper.core.service.EPRuntimeImpl.processEvent(EPRuntimeImpl.java:425)
at com.espertech.esper.core.service.EPRuntimeImpl.sendEvent(EPRuntimeImpl.java:197)
at com.espertech.esper.core.service.EPRuntimeImpl.timerCallback(EPRuntimeImpl.java:171)
at com.espertech.esper.timer.EPLTimerTask.run(EPLTimerTask.java:61)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
이 또한 내 쿼리 내 문제에 대한 100 % 정확하지라고 생각합니다.
아무도 도와 줄 수 있습니까?