在上下文中查询语句的可能输出事件计数

问题描述 投票:0回答:1

我们正在使用这样定义的上下文

private static final String context = "create context oneHour start(0,*,*,*,*,0) end(59,*,*,*,*,59)";

并且我们正在使用epConfig.getEngineDefaults().getThreading().setInternalTimerEnabled(false);关闭内部时钟

我们的陈述完全汇总成一个

 @Hint('enable_outputlimit_opt') context oneHour select sum(pkt), ts, region from com.events group by ts,region output all when terminated

我们以engine.getEPRuntime().sendEvent(new CurrentTimeSpanEvent(event.getTs()));开始上下文然后发送正常事件,例如

engine.getEPRuntime().sendEvent(event);

但是,如果要现在结束上下文,这样可以避免产生内存开销,但是在某些时候,我们想查询多少个聚合事件可以作为输出。

我们在esp​​er中尝试了Iterator

SafeIterator<EventBean> iterator = statement.safeIterator();
      int i = 0;
      while(iterator.hasNext()) {
        i++;
        EventBean bean = iterator.next();
        Object underlaying = bean.getUnderlying();
        System.out.println(underlaying);
      }
 System.out.println("Agg events " + i);

尽管这提供了可能的输出事件计数的内部,但它浪费了对所有事件进行迭代的cpu周期。esper中还有其他方法吗?同样,当我们将查询从output snapshot

更改为output all时,迭代器也会给出结果
complex-event-processing esper
1个回答
0
投票

Esper不会保留任何事件,因为没有声明任何数据窗口。因此,迭代器不会迭代所有事件。

© www.soinside.com 2019 - 2024. All rights reserved.