2014-01-23 2 views
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 % 정확하지라고 생각합니다.

아무도 도와 줄 수 있습니까?

답변

1

예외는 리스너 코드가 NullPointer를 throw 함을 나타냅니다. 코드를 확인하고 싶습니다. 컨텍스트 파티션에서 시작 및 끝 유형 논리를 확인하십시오.

관련 문제