zoukankan      html  css  js  c++  java
  • eclipse下建立esper的demo

      sper是一个Java开发的事件流处理(ESP:Event Stream Processing)和复杂事件处理(CEP:Complex Event Processing)引擎。CEP:是一种实时事件处理并从大量事件数据流中挖掘复杂模式的技术。ESP:是一种从大量事件数据流中过滤,分析有意义的事件,并能够实时取得这些有意义的信息的技术。该引擎可应用于网络入侵探测,SLA监测,RFID读取,航空运输调控,金融方面(风险管理,欺诈探测)等领域。

      在esper官网的Quick Start中有一个简单的例子,但是并没有说明如何在eclipse中建立该工程。同时,发现quick start中的例子在新版本esper-4.9.0中有一丁点的问题。我下面将说明如何建立esper_demo的工程,并做简单的解释。

    一、建立工程导入依赖包

      在eclipse先建立一个java project,然后导入5个必要的依赖jar:esper-4.9.0.jar、antlr-runtime-3.2.jar、cglib-nodep-2.2.jar、commons-logging-1.1.1.jar、log4j-1.2.16.jar,这个几个依赖包都在官网下载来的包中有。

    二、代码编写

    1、创建Event Class

      根据官网上的例子,先在src建立一个package:org.myapp.event,然后在包下新建一个OrderEvent类。

     1 package org.myapp.event;
     2 
     3 public class OrderEvent {
     4   private String itemName;
     5   private double price;
     6 
     7   public OrderEvent(String itemName, double price) {
     8     this.itemName = itemName;
     9     this.price = price;
    10   }
    11 
    12   public String getItemName() {
    13     return itemName;
    14   }
    15 
    16   public double getPrice() {
    17     return price;
    18   }
    19 }

    2、建立MyListener类,添加一个Listner

     1 package org.myapp.event;
     2 
     3 import com.espertech.esper.client.EventBean;
     4 import com.espertech.esper.client.UpdateListener;
     5 
     6 public class MyListener implements UpdateListener {
     7   public void update(EventBean[] newEvents, EventBean[] oldEvents) {
     8     EventBean event = newEvents[0];
     9     System.out.println("avg=" + event.get("avg(price)"));
    10   }
    11

    3、建立一个main类

     1 package org.myapp.event;
     2 
     3 import com.espertech.esper.client.Configuration;
     4 import com.espertech.esper.client.EPServiceProvider;
     5 import com.espertech.esper.client.EPServiceProviderManager;
     6 import com.espertech.esper.client.EPStatement;
     7 
     8 public class test {
     9 
    10   public static void main(String[] args) {
    11 
    12     // EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider();
    13     // String expression = "select avg(price) from org.myapp.event.OrderEvent.win:time(30 sec)";
    14     // EPStatement statement = epService.getEPAdministrator().createEPL(expression);
    15 
    16     Configuration config = new Configuration();
    17     config.addEventTypeAutoName("org.myapp.event");
    18     EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config);
    19 
    20     String epl = "select avg(price) from OrderEvent.win:time(30 sec)";
    21     EPStatement statement = epService.getEPAdministrator().createEPL(epl);
    22 
    23     MyListener listener = new MyListener();
    24     statement.addListener(listener);
    25 
    26     OrderEvent event = new OrderEvent("shirt", 74.50);
    27     epService.getEPRuntime().sendEvent(event);
    28 
    29   }
    30 
    31 }

       17行,在官网中应该是config.addEventTypeAutoAlias("org.myapp.event");但是,在eclipse中显示错误,查了Configuration的API后发现并没有这个函数。所以,换成了addEventTypeAutoName,这个函数(将这个package中所有的class作为event导入)。EPServiceProviderManager.getDefaultProvider(config)是否有config这个参数,返回的都是默认的EPServiceProvider(API上这么说,令人诧异)。

      这样就可以直接运行了,avg=74.5,这个运行结果恐怕让人一头雾水。我们不妨把26-27替换成如下代码在重新尝试下。

    1     for (int i = 0; i < 10; i++) {
    2       epService.getEPRuntime().sendEvent(new OrderEvent("Name" + i,(i + 1) * 10));
    3       // Thread.sleep(1000);
    4     }

      在看下输出结果。是否一目了然了。

     

  • 相关阅读:
    webpack入门(1)
    react基础(2)
    react基础(1)
    react入门(5)
    react入门(4)
    react入门(3)
    webstorm出现黑色块光标
    微信小程序——组件(二)
    微信小程序——组件(一)
    react-native 在Xcode上传到iTunes Connect里报错
  • 原文地址:https://www.cnblogs.com/wukenaihe/p/2960209.html
Copyright © 2011-2022 走看看