Esper事件处理机制

1. sendEvent()和对应lisenter的update()方法是在同一个线程里面。所以update方法的效率会影响sendEvent的执行。

 

2. 在sendEvent()的时候,会调用matchEvent的方法,这个方法会为每一个调用sendEvent的线程建立一个dispatch的list,如果这个线程发送到event能够和某个statement的类型对应到,就会加到这个线程的list中去。

 

3. 在matchEvent后,就会调用processEvent,这个方法最终会在dispatchService里面找到本线程的dispatch list,把最近的事件拿出来,更新到事件的window中,并且把这个事件发给listener的update方法。

 

ps: 第一点那里,只有是普通的window才是在同一个线程里面。如果是一个time_batch的window的话,会在一个timer线程中调用update。

你可能感兴趣的:(事件)