2014-01-23 41 views
1

我有一個數據流每10秒發送一個數據包。我需要一個針對Esper的查詢,在設備關閉時生成事件(收到最後一個數據包)。 我認爲,如果沒有數據到達30秒設備丟失,但我需要得到的只有1通知每5小時,直到設備回來,以避免垃圾郵件當數據丟失而無垃圾郵件時,Esper會通知我

這裏是我的基本查詢:

select * from pattern [every tick=MyInputStream-> (timer:interval(30 sec) and not MyInputStream)] output every 5 hours 

但它不沒有工作,我得到的第一個事件後:

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。你會想檢查你的代碼。 檢查開始和結束類型邏輯的上下文分區。