当数据丢失而没有垃圾邮件时,Esper会收到通知

时间:2014-01-23 14:10:20

标签: esper complex-event-processing

我有一个每10秒发送一个数据包的数据流。我需要查询Esper,在设备关闭时生成事件(收到最后一个数据包)。 如果没有数据到达30秒,我会假设设备丢失但是我需要每5小时只收到一次通知,直到设备回来,以避免垃圾邮件

这是我的基本查询:

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 个答案:

答案 0 :(得分:1)

异常表示侦听器代码抛出NullPointer。你想检查你的代码。 检查上下文分区的开始和结束类型逻辑。