Time Window:

Length Window:

Time Batch Window:

带batch的是所有的都执行完后,在触发UpdateListener,如下边例子:

public class AppleListener implements UpdateListener {

    public void update(EventBean[] newEvents, EventBean[] oldEvents) {
if (newEvents != null) {
Double avg = (Double)newEvents[0].get("avg(price)");
System.out.println("Apple's average price is " + avg);
}
} }
String epl = "select avg(price) from " + product + ".win:length_batch(3)";
...
runtime.sendEvent(new Apple(1));
runtime.sendEvent(new Apple(2));
runtime.sendEvent(new Apple(3));
//runtime.sendEvent(new Apple(4));
//runtime.sendEvent(new Apple(5));
//runtime.sendEvent(new Apple(6));
  • 当为length(3)时,每次执行runtime.sendEvent都会调用UpdateListener。
  • 当为length_batch(3)时,直到最后的runtime.sendEvent(apple3);执行完毕后,才调用UpdateListener。
  • 当只有runtime.sendEvent(new Apple(1));时,

如果是win:length(3),输出:Apple's average price is 1.0

如果是win:length_batch(3),啥都不输出。

  • 当有runtime.sendEvent(new Apple(1));和runtime.sendEvent(new Apple(2));时,

    如果是win:length(3),输出:

      Apple's average price is 1.0
              Apple's average price is 1.5

    如果是win:length_batch(3),啥都不输出。

  • 当有 runtime.sendEvent(new Apple(1));和runtime.sendEvent(new Apple(2));和runtime.sendEvent(new Apple(3));时,

    如果是win:length(3),输出:

      Apple's average price is 1.0
      Apple's average price is 1.5
      Apple's average price is 2.0

     如果是win:length_batch(3),输出:Apple's average price is 2.0

  • 当sendEvent 4个时,

    如果是win:length(3),输出:

      Apple's average price is 1.0
      Apple's average price is 1.5
      Apple's average price is 2.0
      Apple's average price is 3.0

     如果是win:length_batch(3),输出:Apple's average price is 2.0

  • 当sendEvent 5个时,

    如果是win:length(3),输出:

      Apple's average price is 1.0
      Apple's average price is 1.5
      Apple's average price is 2.0
      Apple's average price is 3.0
      Apple's average price is 4.0

     如果是win:length_batch(3),输出:

      Apple's average price is 2.0

  • 当sendEvent 6个时,

    如果是win:length(3),输出:

      Apple's average price is 1.0
      Apple's average price is 1.5
      Apple's average price is 2.0
      Apple's average price is 3.0
      Apple's average price is 4.0
      Apple's average price is 5.0

     如果是win:length_batch(3),输出:

      Apple's average price is 2.0
      Apple's average price is 5.0

esper(1)-窗口概述的更多相关文章

  1. 复杂事件处理引擎—Esper工作原理

    前面对Esper进行了概述,包括事件类型.事件流.事件窗口以及EPL相关内容.当然,上面的知识,对于简单的Esper开发,应该已经足够,能够根据自己业务需求,做出一个满足需要的Esper应用.但是,真 ...

  2. VS2010/MFC编程入门之四十一(文档、视图和框架:分割窗口)

    上一节中鸡啄米讲了文档.视图和框架结构中各对象之间的关系,本节主要讲讲在MFC中如何分割窗口. 分割窗口概述       分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或 ...

  3. VS2010 MFC中 窗口分割的实现

    分割窗口概述 分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图. MFC分割窗口的方式有两种,动态分割和静态分割. 动态分割窗口通 ...

  4. VS2010-MFC(文档、视图和框架:分割窗口)

    转自:http://www.jizhuomi.com/software/226.html 上一节讲了文档.视图和框架结构中各对象之间的关系,本节主要讲讲在MFC中如何分割窗口. 分割窗口概述      ...

  5. Flink(八)【Flink的窗口机制】

    目录 Flink的窗口机制 1.窗口概述 2.窗口分类 基于时间的窗口 滚动窗口(Tumbling Windows) 滑动窗口(Sliding Windows) 会话窗口(Session Window ...

  6. LoadRunner培训初级教程

    一 LoadRunner简介 1.1 Loadrunner介绍 LoadRunner 是 HP Mercury Interactive 用来测试应用程序性能的工具  LoadRunner 通过模拟一个 ...

  7. Mongodb Manual阅读笔记:CH4 管理

    4 管理 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔 ...

  8. LoadRunner:VuGen开发脚本步骤(二)

    一.介绍 Loadrunner的场景能够描述在测试活动中发生的各种事件.一个场景包括一个运行虚拟用 户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组 二 ...

  9. 编码 - 设置 win10 下 cmd 编码格式

    概述 cmd 编码格式修改 背景 之前尝试过修改 gitbash(mingw) 的 Character Set 这次尝试修改一下 cmd 的编码格式 准备 os win10.1903 1. 查看 当前 ...

随机推荐

  1. [转载]/etc/security/limits.conf解释及应用

    limits.conf的格式如下: username|@groupname type resource limit username|@groupname:设置需要被限制的用户名,组名前面加@和用户名 ...

  2. can基础知识介绍

    1.什么是can 2.can的特点 2.物理层特征 我们使用ISO11898标准,物理层特征如图所示 3.帧的种类介绍 实际上有一些帧是有硬件来实现的. 4.数据帧介绍 5.总线仲裁 6.位时序(用于 ...

  3. C/C++中struct/union/class内存对齐

    struct/union/class内存对齐原则有四个: 1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储 ...

  4. 通过shell脚本开始和结束守护进程

    //关闭脚本 #!/bin/sh WHOAMI=`whoami` PID=`ps -u $WHOAMI | grep 守护进程名 | awk '{print $1}'` if (用户名 "$ ...

  5. git命令(二)

    2.查看.添加.提交.删除.找回,重置修改文件 3.查看文件diff git diff <file> # 比较当前文件和暂存区文件差异 git diff git diff <$id1 ...

  6. C#实现远程开机(局域网测试通过)

    首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联 ...

  7. c#委托与事件、消息、WndProc用法(转)

    c#委托与事件 心得 c#用委托来实现事件通知机制.委托相当与c++函数指针.整个过程涉及一个呼叫者,一个被呼叫者,还有就是这个委托. - 实现步骤有以下几步: 1. 申明委托, 2.定义呼叫者和调用 ...

  8. Promise 异步函数顺序执行

    可以满足需求,且使用方法和Promise.all统一 var a = function() { return new Promise(function(resolve, reject) { setTi ...

  9. Intent要使用的ACTION都有哪些?在哪里能查到详细的ACTION呢?

    Intent操作结构之一就是ACTION,这些ACTION都有哪些?在哪里能查到详细的ACTION呢? 官方文档: https://developer.android.com/reference/an ...

  10. AngularJS(四)——ng-controller(控制器)

    前言 上篇大概说了一下指令的应用格式以及创建自定义指令方法,本篇重点介绍一些ng-controller都有哪些小作用. 内容 通过修改控制器部分,修改显示界面. Demo <div ng-app ...