├── README.md └── csdn-esper ├── .classpath ├── .gitignore ├── .project ├── .settings ├── org.eclipse.jdt.core.prefs └── org.eclipse.m2e.core.prefs ├── csdn-esper.iml ├── etc ├── esper.examples.cfg.xml └── log4j.xml ├── pom.xml └── src └── main └── java ├── example ├── AccessRDBMSTest.java ├── AddArrayEventTypeTest.java ├── AverageBatchListener.java ├── AverageBatchTest.java ├── AverageListener.java ├── AverageTest.java ├── ConfigTest.java ├── ContextListener.java ├── ContextTest.java ├── CreateNamedWindowTest.java ├── DeleteWindowTest.java ├── DropNamedWindowTest.java ├── ErrorCountTest.java ├── EveryDistinctTest.java ├── ExternallyTimeBatchListener.java ├── ExternallyTimeBatchTest.java ├── ForTest.java ├── GroupbyListener.java ├── GroupbyTest.java ├── IncreaseTest.java ├── InsertIntoListener.java ├── InsertIntoTest.java ├── InvocationMethodJava.java ├── InvocationMethodMap.java ├── InvocationMethodTest.java ├── IteratorSQLTest.java ├── IteratorUpdateListener.java ├── IteratorUpdateListenerTest.java ├── JoinContainedEventTest.java ├── JoinTest.java ├── JoinUnidirectionalTest.java ├── LimitFollowedTest.java ├── LogProcessListener.java ├── LogProcessTest.java ├── LogView.java ├── LogViewFactory.java ├── MapProcessListener.java ├── MapProcessTest.java ├── MaxValueTest.java ├── MySQLColumnTypeConvertor.java ├── MySQLOutputRowConvertor.java ├── OnDeleteWindowTest.java ├── OnMergeWindowTest.java ├── OnSelectDeleteWindowTest.java ├── OnSelectWindowTest.java ├── OnSetVariableTest.java ├── OnUpdateWindowTest.java ├── PattenListener.java ├── PatternConsumeTest.java ├── PatternFollowedTest.java ├── PatternTest.java ├── PojoInterfaceEventTypeTest.java ├── PreparedStatementTest.java ├── ReplaylastResultTest.java ├── ResultListener.java ├── SQLColumnTypeConversionTest.java ├── SQLOutputRowConversionTest.java ├── SelectContainedEventTest.java ├── SelectNamedWindowTest.java ├── SelectWindowEventTest.java ├── SelectWindowTest.java ├── SplitDuplicateTest.java ├── StandardGroupWinListener.java ├── StandardGroupWinTest.java ├── StatementStartedOrStoppedTest.java ├── SubqueryAggregationTest.java ├── SubqueryExistsTest.java ├── TimeBatchListener.java ├── TimeBatchTest.java ├── TimeOldEventsListener.java ├── TimeOldEventsTest.java ├── UpdateEventTest.java ├── UpdateWindowTest.java ├── VariableTest.java ├── ViewListener.java └── model │ ├── ESB.java │ ├── Fruit.java │ ├── Product.java │ ├── T.java │ ├── Timer.java │ ├── User.java │ └── contained │ ├── Book.java │ ├── Books.java │ ├── Item.java │ ├── Items.java │ ├── MediaOrder.java │ └── Review.java └── test ├── Test.java └── TestListener.java /README.md: -------------------------------------------------------------------------------- 1 | csdn-esper 2 | ========== 3 | 4 | Esper专栏源代码 5 | 6 | 博客地址:http://blog.csdn.net/luonanqin 7 | -------------------------------------------------------------------------------- /csdn-esper/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /csdn-esper/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.DS_Store 3 | -------------------------------------------------------------------------------- /csdn-esper/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | csdn-esper 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.m2e.core.maven2Nature 21 | org.eclipse.jdt.core.javanature 22 | 23 | 24 | -------------------------------------------------------------------------------- /csdn-esper/.settings/org.eclipse.jdt.core.prefs: -------------------------------------------------------------------------------- 1 | eclipse.preferences.version=1 2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve 5 | org.eclipse.jdt.core.compiler.compliance=1.6 6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate 7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate 8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate 9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 11 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning 12 | org.eclipse.jdt.core.compiler.source=1.6 13 | -------------------------------------------------------------------------------- /csdn-esper/.settings/org.eclipse.m2e.core.prefs: -------------------------------------------------------------------------------- 1 | activeProfiles= 2 | eclipse.preferences.version=1 3 | resolveWorkspaceProjects=true 4 | version=1 5 | -------------------------------------------------------------------------------- /csdn-esper/csdn-esper.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /csdn-esper/etc/esper.examples.cfg.xml: -------------------------------------------------------------------------------- 1 | > -------------------------------------------------------------------------------- /csdn-esper/etc/log4j.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /csdn-esper/pom.xml: -------------------------------------------------------------------------------- 1 | 3 | 4.0.0 4 | csdn-esper 5 | csdn-esper 6 | 0.0.1-SNAPSHOT 7 | 8 | 9 | log4j 10 | log4j 11 | 1.2.16 12 | 13 | 14 | commons-logging 15 | commons-logging-api 16 | 1.1 17 | 18 | 19 | cglib 20 | cglib-nodep 21 | 2.2 22 | 23 | 24 | org.antlr 25 | antlr-runtime 26 | 3.2 27 | 28 | 29 | junit 30 | junit 31 | 4.8.1 32 | 33 | 34 | mysql 35 | mysql-connector-java 36 | 5.1.8 37 | 38 | 39 | com.espertech 40 | esper 41 | 4.9.0 42 | 43 | 44 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AccessRDBMSTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.Configuration; 4 | import com.espertech.esper.client.EPAdministrator; 5 | import com.espertech.esper.client.EPRuntime; 6 | import com.espertech.esper.client.EPServiceProvider; 7 | import com.espertech.esper.client.EPServiceProviderManager; 8 | import com.espertech.esper.client.EPStatement; 9 | import com.espertech.esper.client.EventBean; 10 | import com.espertech.esper.client.UpdateListener; 11 | 12 | /** 13 | * 14 | * 15 | * @author luonanqin 16 | */ 17 | 18 | class Student { 19 | private int sid; 20 | private String name; 21 | 22 | public int getSid() { 23 | return sid; 24 | } 25 | 26 | public void setSid(int sid) { 27 | this.sid = sid; 28 | } 29 | 30 | public String getName() { 31 | return name; 32 | } 33 | 34 | public void setName(String name) { 35 | this.name = name; 36 | } 37 | } 38 | 39 | class StudentListener implements UpdateListener { 40 | 41 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 42 | if (newEvents != null) { 43 | System.out.println(newEvents.length); 44 | } 45 | } 46 | } 47 | 48 | public class AccessRDBMSTest { 49 | 50 | public static void main(String[] args) throws InterruptedException { 51 | Configuration config = new Configuration(); 52 | config.configure("esper.examples.cfg.xml"); 53 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 54 | 55 | EPAdministrator admin = epService.getEPAdministrator(); 56 | EPRuntime runtime = epService.getEPRuntime(); 57 | String epl1 = "select id, name from " + Student.class.getName() + ",sql:test['select id from test1 where id=${sid}']"; 58 | System.out.println(epl1); 59 | EPStatement state1 = admin.createEPL(epl1); 60 | state1.addListener(new StudentListener()); 61 | 62 | Student s1 = new Student(); 63 | s1.setSid(1); 64 | s1.setName("name"); 65 | runtime.sendEvent(s1); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AddArrayEventTypeTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.ConfigurationOperations; 4 | import com.espertech.esper.client.EPAdministrator; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EventType; 8 | 9 | import java.util.Arrays; 10 | 11 | /** 12 | * 1.新增数组类EventBean需要输入事件名,包含的属性列表,及列表类型。列表和列表类型一一对应 13 | * 2.更新数组类EventBean为增量更新,只能增加属性,不能删除属性 14 | * 15 | * @author luonanqin 16 | * 17 | */ 18 | public class AddArrayEventTypeTest { 19 | 20 | public static void main(String[] args) throws InterruptedException { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | ConfigurationOperations config = admin.getConfiguration(); 25 | 26 | config.addEventType("arrayTest", new String[] { "a", "b" }, new Object[] { String.class, int.class }); 27 | EventType event = config.getEventType("arrayTest"); 28 | System.out.println("Event Names: " + Arrays.asList(event.getPropertyNames())); 29 | 30 | config.updateObjectArrayEventType("arrayTest", new String[] { "c" }, new Object[] { long.class }); 31 | event = config.getEventType("arrayTest"); 32 | System.out.println("Event Names: " + Arrays.asList(event.getPropertyNames())); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AverageBatchListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class AverageBatchListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | EventBean event = newEvents[0]; 11 | System.out.println("avg price(win:length_batch(2)): " + event.get("avg(price)")); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AverageBatchTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Product; 9 | 10 | /** 11 | * avg函数用于计算view里包含的事件的平均值,具体计算的平均值是由avg里的内容决定的 12 | * 以如下view所示,如果为length_batch,则当batch满足数量并触发监听器时,只计算view里的平均price,不会将oldEvent计算在内 13 | * 如果为length,则请参看AverageTest例子 14 | * 15 | * @author luonanqin 16 | * 17 | */ 18 | public class AverageBatchTest { 19 | 20 | public static void main(String[] args) throws InterruptedException { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | 25 | String product = Product.class.getName(); 26 | String epl1 = "select avg(price) from " + product + ".win:length_batch(2)"; 27 | 28 | EPStatement state = admin.createEPL(epl1); 29 | state.addListener(new AverageBatchListener()); 30 | 31 | EPRuntime runtime = epService.getEPRuntime(); 32 | 33 | Product esb = new Product(); 34 | esb.setPrice(1); 35 | esb.setType("esb"); 36 | runtime.sendEvent(esb); 37 | 38 | Product eos = new Product(); 39 | eos.setPrice(2); 40 | eos.setType("eos"); 41 | runtime.sendEvent(eos); 42 | 43 | Product esb1 = new Product(); 44 | esb1.setPrice(2); 45 | esb1.setType("esb"); 46 | runtime.sendEvent(esb1); 47 | 48 | Product eos1 = new Product(); 49 | eos1.setPrice(5); 50 | eos1.setType("eos"); 51 | runtime.sendEvent(eos1); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AverageListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class AverageListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | EventBean event = newEvents[0]; 11 | System.out.println("avg price(win:length(2)): " + event.get("avg(price)")); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/AverageTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Product; 9 | 10 | /** 11 | * avg函数用于计算view里包含的事件的平均值,具体计算的平均值是由avg里的内容决定的 12 | * 以如下view所示,如果为length,则每次事件进入并触发监听器时,只计算view里的平均price,不会将oldEvent计算在内 13 | * 如果为length_batch,则请参看AverageBatchTest例子 14 | * 15 | * @author luonanqin 16 | * 17 | */ 18 | public class AverageTest { 19 | 20 | public static void main(String[] args) throws InterruptedException { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | 25 | String product = Product.class.getName(); 26 | String epl1 = "select avg(price) from " + product + ".win:length(2)"; 27 | 28 | EPStatement state = admin.createEPL(epl1); 29 | state.addListener(new AverageListener()); 30 | 31 | EPRuntime runtime = epService.getEPRuntime(); 32 | 33 | Product esb = new Product(); 34 | esb.setPrice(1); 35 | esb.setType("esb"); 36 | runtime.sendEvent(esb); 37 | 38 | Product eos = new Product(); 39 | eos.setPrice(2); 40 | eos.setType("eos"); 41 | runtime.sendEvent(eos); 42 | 43 | Product esb1 = new Product(); 44 | esb1.setPrice(2); 45 | esb1.setType("esb"); 46 | runtime.sendEvent(esb1); 47 | 48 | Product eos1 = new Product(); 49 | eos1.setPrice(5); 50 | eos1.setType("eos"); 51 | runtime.sendEvent(eos1); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ConfigTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.io.File; 4 | 5 | import com.espertech.esper.client.Configuration; 6 | import com.espertech.esper.client.ConfigurationOperations; 7 | import com.espertech.esper.client.EPAdministrator; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EventType; 11 | 12 | import example.model.ESB; 13 | import example.model.Product; 14 | 15 | /** 16 | * ConfigurationOperations对象可以获取配置文件和运行时的EventType等其他配置 17 | * 18 | * @author luonanqin 19 | * 20 | */ 21 | public class ConfigTest { 22 | 23 | /** 24 | * @param args 25 | */ 26 | public static void main(String[] args) { 27 | Configuration config = new Configuration(); 28 | config.configure(new File("etc/esper.examples.cfg.xml")); 29 | EPServiceProvider epService = EPServiceProviderManager.getProvider("default", config); 30 | 31 | EPAdministrator admin = epService.getEPAdministrator(); 32 | 33 | String esb = ESB.class.getName(); 34 | String context1 = "create context esbtest partition by id from " + esb; 35 | String epl1 = "context esbtest select avg(price) as aPrice from " + esb; 36 | 37 | admin.createEPL(context1, "context1"); 38 | admin.createEPL(epl1, "epl1"); 39 | 40 | ConfigurationOperations conf = admin.getConfiguration(); 41 | conf.addEventType("product", Product.class); 42 | 43 | EventType[] types = conf.getEventTypes(); 44 | for (EventType type : types) { 45 | System.out.println("name: " + type.getName() + ", underlyingName: " + type.getUnderlyingType()); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ContextListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class ContextListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | EventBean event = newEvents[0]; 11 | System.out.println("id: " + event.get("id") + ", avgPrice: " + event.get("aPrice")); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ContextTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Iterator; 5 | import java.util.List; 6 | 7 | import com.espertech.esper.client.EPAdministrator; 8 | import com.espertech.esper.client.EPRuntime; 9 | import com.espertech.esper.client.EPServiceProvider; 10 | import com.espertech.esper.client.EPServiceProviderManager; 11 | import com.espertech.esper.client.EPStatement; 12 | import com.espertech.esper.client.EventBean; 13 | import com.espertech.esper.client.context.ContextPartitionSelectorSegmented; 14 | import example.model.ESB; 15 | 16 | /** 17 | * 1.context的作用是对特定的context定义产生隔离,如例子所示,以不同的id进行隔离,id为1的平均价格只有当id为1的事件 18 | * 进入时才会计算,id为2的价格不参与id为1的平均价格计算 19 | * 2.遍历context中的所有evnet,需要先定义ContextPartitionSelector接口,如44行所示,其中接口的实现是将你要遍历的 20 | * 对应context定义的内容值按照规定格式返回,如getPartitionKeys方法所示 21 | * 22 | * @author luonanqin 23 | * 24 | */ 25 | public class ContextTest { 26 | 27 | public static void main(String[] args) throws InterruptedException { 28 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 29 | 30 | EPAdministrator admin = epService.getEPAdministrator(); 31 | 32 | String esb = ESB.class.getName(); 33 | // 创建context 34 | String epl1 = "create context esbtest partition by id from " + esb; 35 | String epl2 = "context esbtest select avg(price) as aPrice, id from " + esb; 36 | 37 | EPStatement context = admin.createEPL(epl1); 38 | EPStatement state = admin.createEPL(epl2); 39 | state.addListener(new ContextListener()); 40 | 41 | EPRuntime runtime = epService.getEPRuntime(); 42 | // 查看id为1的平均价格 43 | ContextPartitionSelectorSegmented selectCtx = new ContextPartitionSelectorSegmented() { 44 | 45 | // 该方法的实现方式与context定义的properties有关,如果有两个property id和time,则Object数组长度为2,obj[0]为id值, 46 | // obj[1]为time值,然后再添加到list中并返回 47 | public List getPartitionKeys() { 48 | Object[] o = new Object[1]; 49 | o[0] = 1; 50 | List list = new ArrayList(); 51 | list.add(o); 52 | return list; 53 | } 54 | }; 55 | 56 | ESB t1 = new ESB(); 57 | t1.setId(1); 58 | t1.setPrice(20); 59 | System.out.println("sendEvent: id=1, price=20"); 60 | runtime.sendEvent(t1); 61 | 62 | ESB t2 = new ESB(); 63 | t2.setId(2); 64 | t2.setPrice(30); 65 | System.out.println("sendEvent: id=2, price=30"); 66 | runtime.sendEvent(t2); 67 | 68 | ESB t3 = new ESB(); 69 | t3.setId(1); 70 | t3.setPrice(30); 71 | System.out.println("sendEvent: id=1, price=30"); 72 | runtime.sendEvent(t3); 73 | 74 | Iterator it = state.iterator(selectCtx); 75 | EventBean event = it.hasNext() ? it.next() : null; 76 | System.out.println("Iterator context: id=1, avgPrice=" + event.get("aPrice")); 77 | 78 | ESB t4 = new ESB(); 79 | t4.setId(2); 80 | t4.setPrice(40); 81 | System.out.println("sendEvent: id=2, price=40"); 82 | runtime.sendEvent(t4); 83 | 84 | ESB t5 = new ESB(); 85 | t5.setId(5); 86 | t5.setPrice(10); 87 | System.out.println("sendEvent: id=5, price=10"); 88 | runtime.sendEvent(t5); 89 | 90 | ESB t6 = new ESB(); 91 | t6.setId(5); 92 | t6.setPrice(20); 93 | System.out.println("sendEvent: id=5, price=20"); 94 | runtime.sendEvent(t6); 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/CreateNamedWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPServiceProvider; 5 | import com.espertech.esper.client.EPServiceProviderManager; 6 | 7 | /** 8 | * Created by Luonanqin on 3/17/14. 9 | */ 10 | 11 | class OrderEvent { 12 | 13 | private int price; 14 | private OrderEvent o; 15 | 16 | public OrderEvent getO() { 17 | return o; 18 | } 19 | 20 | public void setO(OrderEvent o) { 21 | this.o = o; 22 | } 23 | 24 | public int getPrice() { 25 | return price; 26 | } 27 | 28 | public void setPrice(int price) { 29 | this.price = price; 30 | } 31 | } 32 | 33 | class SubOrderEvent extends OrderEvent { 34 | 35 | } 36 | 37 | interface InterfaceEvent { 38 | public int getPrice(); 39 | 40 | public String getName(); 41 | } 42 | 43 | class InterfaceEventImpl implements InterfaceEvent { 44 | private int price; 45 | private String name; 46 | 47 | public String getName() { 48 | return name; 49 | } 50 | 51 | public void setName(String name) { 52 | this.name = name; 53 | } 54 | 55 | public int getPrice() { 56 | 57 | return price; 58 | } 59 | 60 | public void setPrice(int price) { 61 | this.price = price; 62 | } 63 | } 64 | 65 | public class CreateNamedWindowTest { 66 | 67 | public static void main(String[] args) { 68 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 69 | EPAdministrator admin = epService.getEPAdministrator(); 70 | 71 | String orderEvent = OrderEvent.class.getName(); 72 | String subOrderEvent = SubOrderEvent.class.getName(); 73 | String epl1 = "create window OrderWindow.win:time(30 sec) select o, price from " + orderEvent; 74 | String epl2 = "insert into OrderWindow select o, price from " + subOrderEvent + " as o"; 75 | 76 | String interfaceEvent = InterfaceEvent.class.getName(); 77 | String interfaceEventImpl = InterfaceEventImpl.class.getName(); 78 | String epl3 = "create window InterfaceWindow.win: time(2 sec) as select * from " + interfaceEvent; 79 | String epl4 = "insert into InterfaceWindow select * from " + interfaceEventImpl; 80 | 81 | admin.createEPL(epl1); 82 | System.out.println("Create EPL: " + epl1); 83 | admin.createEPL(epl2); 84 | System.out.println("Create EPL: " + epl2); 85 | 86 | admin.createEPL(epl3); 87 | System.out.println("Create EPL: " + epl3); 88 | admin.createEPL(epl4); 89 | System.out.println("Create EPL: " + epl4); 90 | 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/DeleteWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPOnDemandQueryResult; 5 | import com.espertech.esper.client.EPRuntime; 6 | import com.espertech.esper.client.EPServiceProvider; 7 | import com.espertech.esper.client.EPServiceProviderManager; 8 | import com.espertech.esper.client.EventBean; 9 | 10 | /** 11 | * Created by Luonanqin on 4/8/14. 12 | */ 13 | class DeleteEvent { 14 | private String name; 15 | private int size; 16 | 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public void detName(String name) { 22 | this.name = name; 23 | } 24 | 25 | public int getSize() { 26 | return size; 27 | } 28 | 29 | public void detSize(int size) { 30 | this.size = size; 31 | } 32 | 33 | public String toString() { 34 | return "name=" + name + ", size=" + size; 35 | } 36 | } 37 | 38 | public class DeleteWindowTest { 39 | 40 | public static void main(String[] args) { 41 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 42 | EPAdministrator admin = epService.getEPAdministrator(); 43 | EPRuntime runtime = epService.getEPRuntime(); 44 | 45 | String deleteEvent = DeleteEvent.class.getName(); 46 | 47 | String epl1 = "create window DeleteWindow.win:keepall() as select * from " + deleteEvent; 48 | String epl2 = "insert into DeleteWindow select * from " + deleteEvent; 49 | 50 | admin.createEPL(epl1); 51 | admin.createEPL(epl2); 52 | 53 | DeleteEvent de1 = new DeleteEvent(); 54 | de1.detName("de1"); 55 | de1.detSize(1); 56 | runtime.sendEvent(de1); 57 | System.out.println("Send DeleteEvent 1: " + de1); 58 | 59 | DeleteEvent de2 = new DeleteEvent(); 60 | de2.detName("de2"); 61 | de2.detSize(2); 62 | runtime.sendEvent(de2); 63 | System.out.println("Send DeleteEvent 2: " + de2); 64 | 65 | String delect = "select * from DeleteWindow"; 66 | String delete = "Delete from DeleteWindow where size < 2"; 67 | 68 | System.out.println("\nSelect DeleteWindow!"); 69 | EPOnDemandQueryResult result1 = epService.getEPRuntime().executeQuery(delect); 70 | EventBean[] events = result1.getArray(); 71 | for (int i = 0; i < events.length; i++) { 72 | System.out.println(events[i].getUnderlying()); 73 | } 74 | 75 | System.out.println("\nDelete DeleteEvent(size < 2) from DeleteWindow!"); 76 | EPOnDemandQueryResult result2 = epService.getEPRuntime().executeQuery(delete); 77 | events = result2.getArray(); 78 | for (int i = 0; i < events.length; i++) { 79 | System.out.println(events[i].getUnderlying()); 80 | } 81 | 82 | System.out.println("\nSelect DeleteWindow!"); 83 | result1 = epService.getEPRuntime().executeQuery(delect); 84 | events = result1.getArray(); 85 | for (int i = 0; i < events.length; i++) { 86 | System.out.println(events[i].getUnderlying()); 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/DropNamedWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | 9 | /** 10 | * Created by Luonanqin on 4/10/14. 11 | */ 12 | class DropEvent { 13 | private String name; 14 | private int size; 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | 20 | public void setName(String name) { 21 | this.name = name; 22 | } 23 | 24 | public int getSize() { 25 | return size; 26 | } 27 | 28 | public void setSize(int size) { 29 | this.size = size; 30 | } 31 | 32 | public String toString() { 33 | 34 | return "name=" + name + ", size=" + size; 35 | } 36 | } 37 | 38 | public class DropNamedWindowTest { 39 | 40 | public static void main(String[] args) { 41 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 42 | EPAdministrator admin = epService.getEPAdministrator(); 43 | EPRuntime runtime = epService.getEPRuntime(); 44 | 45 | String dropEvent = DropEvent.class.getName(); 46 | 47 | String epl1 = "create window DropWindow.win:keepall() as select * from " + dropEvent; 48 | String epl2 = "insert into DropWindow select * from " + dropEvent; 49 | 50 | EPStatement state1 = admin.createEPL(epl1); 51 | admin.createEPL(epl2); 52 | 53 | SelectEvent se1 = new SelectEvent(); 54 | se1.setName("se1"); 55 | se1.setSize(1); 56 | runtime.sendEvent(se1); 57 | System.out.println("Send SelectEvent 1: " + se1); 58 | 59 | state1.destroy(); 60 | 61 | SelectEvent se2 = new SelectEvent(); 62 | se2.setName("se2"); 63 | se2.setSize(2); 64 | runtime.sendEvent(se2); 65 | System.out.println("Send SelectEvent 2: " + se2); 66 | 67 | // 再次建立的named window结构和之前的不同,会抛异常 68 | // epl1 = "create window DropWindow.win:keepall() as select size from " + dropEvent; 69 | admin.createEPL(epl1); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ErrorCountTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | import com.espertech.esper.client.EventBean; 12 | import com.espertech.esper.client.UpdateListener; 13 | import example.model.Product; 14 | 15 | /** 16 | * 某条应用的报错信息,在某个固定时间段内发生N次,则产生报警 17 | * 18 | * @author luonq(luonq@primeton.com) 19 | * 20 | */ 21 | class CountListener implements UpdateListener { 22 | 23 | private int current = 0; 24 | private EPRuntime runtime; 25 | 26 | public CountListener(EPRuntime runtime) { 27 | this.runtime = runtime; 28 | } 29 | 30 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 31 | if (newEvents != null) { 32 | long count = (Long) newEvents[0].get("prevcount(i)"); 33 | current = (int) count; 34 | } 35 | if (oldEvents != null) { 36 | Map event = new HashMap(); 37 | event.put("sum", current); 38 | runtime.sendEvent(event, "OneTest"); 39 | 40 | current -= oldEvents.length; 41 | } 42 | } 43 | } 44 | 45 | class Result1Listener implements UpdateListener { 46 | 47 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 48 | if (newEvents != null) 49 | System.out.println("Clarm!!!!"); 50 | } 51 | } 52 | 53 | public class ErrorCountTest { 54 | 55 | /** 56 | * @param args 57 | */ 58 | public static void main(String[] args) { 59 | int N = 5; 60 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 61 | 62 | EPAdministrator admin = epService.getEPAdministrator(); 63 | 64 | Map mapDef = new HashMap(); 65 | mapDef.put("sum", int.class); 66 | 67 | admin.getConfiguration().addEventType("OneTest", mapDef); 68 | 69 | EPRuntime runtime = epService.getEPRuntime(); 70 | 71 | String product = Product.class.getName(); 72 | String count = "select irstream *, prevcount(i) from " + product + ".win:time(5 sec) as i"; 73 | String result = "select * from OneTest(sum > " + N + ")"; 74 | 75 | EPStatement state1 = admin.createEPL(count); 76 | state1.addListener(new CountListener(runtime)); 77 | EPStatement state2 = admin.createEPL(result); 78 | state2.addListener(new Result1Listener()); 79 | 80 | Product esb = new Product(); 81 | esb.setPrice(1); 82 | esb.setType("esb"); 83 | runtime.sendEvent(esb); 84 | 85 | Product eos = new Product(); 86 | eos.setPrice(2); 87 | eos.setType("eos"); 88 | runtime.sendEvent(eos); 89 | 90 | Product esb1 = new Product(); 91 | esb1.setPrice(3); 92 | esb1.setType("esb"); 93 | runtime.sendEvent(esb1); 94 | 95 | Product eos1 = new Product(); 96 | eos1.setPrice(5); 97 | eos1.setType("eos"); 98 | runtime.sendEvent(eos1); 99 | 100 | Product esb2 = new Product(); 101 | esb2.setPrice(6); 102 | esb2.setType("esb"); 103 | runtime.sendEvent(esb2); 104 | 105 | Product eos3 = new Product(); 106 | eos3.setPrice(7); 107 | eos3.setType("eos"); 108 | runtime.sendEvent(eos3); 109 | 110 | System.out.println(); 111 | } 112 | 113 | } 114 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/EveryDistinctTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 9/15/14. 13 | */ 14 | class EveryDistinctEvent { 15 | 16 | private int num; 17 | 18 | public int getNum() { 19 | return num; 20 | } 21 | 22 | public void setNum(int num) { 23 | this.num = num; 24 | } 25 | 26 | public String toString() { 27 | return "EveryDistinctEvent{" + "num=" + num + '}'; 28 | } 29 | } 30 | 31 | class EveryDistinctListener implements UpdateListener { 32 | 33 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 34 | if (newEvents != null) { 35 | System.out.println("\nResult: "); 36 | for (int i = 0; i < newEvents.length; i++) { 37 | EventBean event = newEvents[i]; 38 | System.out.println(event.get("a")); 39 | } 40 | } 41 | } 42 | } 43 | 44 | public class EveryDistinctTest { 45 | 46 | public static void main(String[] args) throws InterruptedException { 47 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 48 | EPAdministrator admin = epService.getEPAdministrator(); 49 | EPRuntime runtime = epService.getEPRuntime(); 50 | 51 | String everyDistinct = EveryDistinctEvent.class.getName(); 52 | String limit = LimitEvent.class.getName(); 53 | 54 | String epl1 = "every-distinct(a.num) a=" + everyDistinct; 55 | System.out.println("EPL1: " + epl1); 56 | EPStatement stat1 = admin.createPattern(epl1); 57 | stat1.addListener(new EveryDistinctListener()); 58 | 59 | EveryDistinctEvent ed1 = new EveryDistinctEvent(); 60 | ed1.setNum(1); 61 | 62 | EveryDistinctEvent ed2 = new EveryDistinctEvent(); 63 | ed2.setNum(2); 64 | 65 | EveryDistinctEvent ed3 = new EveryDistinctEvent(); 66 | ed3.setNum(1); 67 | 68 | System.out.println("\nSend Event: " + ed1); 69 | runtime.sendEvent(ed1); 70 | System.out.println("\nSend Event: " + ed2); 71 | runtime.sendEvent(ed2); 72 | System.out.println("\nSend Event: " + ed3); 73 | runtime.sendEvent(ed3); 74 | 75 | stat1.destroy(); 76 | 77 | String epl2 = "every-distinct(a.num) (a=" + everyDistinct + " and not " + limit + ")"; 78 | System.out.println("\nEPL2: " + epl2); 79 | EPStatement stat2 = admin.createPattern(epl2); 80 | stat2.addListener(new EveryDistinctListener()); 81 | 82 | LimitEvent l1 = new LimitEvent(); 83 | 84 | System.out.println("\nSend Event: " + ed1); 85 | runtime.sendEvent(ed1); 86 | System.out.println("\nSend Event: " + ed2); 87 | runtime.sendEvent(ed2); 88 | System.out.println("\nSend Event: " + l1); 89 | runtime.sendEvent(l1); 90 | System.out.println("\nSend Event: " + ed3); 91 | runtime.sendEvent(ed3); 92 | 93 | stat2.destroy(); 94 | 95 | String epl3 = "every-distinct(a.num, 3 sec) a=" + everyDistinct; 96 | System.out.println("\nEPL3: " + epl3); 97 | EPStatement stat3 = admin.createPattern(epl3); 98 | stat3.addListener(new EveryDistinctListener()); 99 | 100 | System.out.println("\nSend Event: " + ed1); 101 | runtime.sendEvent(ed1); 102 | System.out.println("\nSend Event: " + ed2); 103 | runtime.sendEvent(ed2); 104 | System.out.println("\nSleep 3 seconds!"); 105 | Thread.sleep(3000); 106 | System.out.println("\nSend Event: " + ed3); 107 | runtime.sendEvent(ed3); 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ExternallyTimeBatchListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class ExternallyTimeBatchListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | System.out.println("avgTime: " + newEvents[0].get("at") + " " + newEvents[0].get("count")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ExternallyTimeBatchTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Timer; 9 | 10 | /** 11 | * 1.外部时间view需要通过expression进行创建后才能使用 12 | * 2.计时方式不是通过设定一个初始时间点并根据interval的时长顺序执行的,而是每一个interval到达后重新设定初始时间点(设定的时间点是上一个事件到达的时间),即不断的进行时间区间的初始点更新 13 | * 3.根据2,在使用外部时间view时要不断对初始时间进行累加(esper内部是每100毫秒进行一次时间加法,可以参照esper的时间加法操作,即EPLTimerTask),方便每次事件输入到view的时候能够查到时间轴上最新的时刻 14 | * 4.以上说明同时适用ext_timed_batch和ext_timed两种外部时间view 15 | * 16 | * @author luonanqin 17 | * 18 | */ 19 | public class ExternallyTimeBatchTest { 20 | 21 | public static void main(String[] args) throws InterruptedException { 22 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 23 | 24 | EPAdministrator admin = epService.getEPAdministrator(); 25 | long timeVar = 1368629247245L; 26 | epService.getEPAdministrator().getConfiguration().addVariable("stdTime", long.class, timeVar); 27 | 28 | String timer = Timer.class.getName(); 29 | String epl1 = "expression st{ stdTime } select st(), prevcount(t) as count, avg(time) as at from " + timer + ".win:ext_timed_batch(st(), 2 sec) as t"; 30 | /** 31 | * 因为espression内部返回的是单个变量,所以可以不需要建立expression,如下所示: 32 | * String epl1 = "select prevcount(t) as count, avg(time) as at from " + timer + ".win:ext_timed_batch(stdTime, 2 sec) as t"; 33 | */ 34 | long ct = System.currentTimeMillis(); 35 | 36 | EPStatement state = admin.createEPL(epl1); 37 | System.out.println(state.getText()); 38 | state.addListener(new ExternallyTimeBatchListener()); 39 | 40 | EPRuntime runtime = epService.getEPRuntime(); 41 | 42 | Timer t1 = new Timer(); 43 | t1.setId(1); 44 | t1.setTime(15); 45 | runtime.sendEvent(t1); 46 | 47 | long temp = System.currentTimeMillis(); 48 | long interval = temp - ct; 49 | ct = temp; 50 | timeVar += interval; 51 | runtime.setVariableValue("stdTime", timeVar); 52 | runtime.getVariableValue("stdTime"); 53 | 54 | Timer t2 = new Timer(); 55 | t2.setId(2); 56 | t2.setTime(35); 57 | runtime.sendEvent(t2); 58 | 59 | Thread.sleep(3000); 60 | temp = System.currentTimeMillis(); 61 | interval = temp - ct; 62 | ct = temp; 63 | timeVar += interval; 64 | runtime.setVariableValue("stdTime", timeVar); 65 | 66 | Timer t3 = new Timer(); 67 | t3.setId(3); 68 | t3.setTime(30); 69 | runtime.sendEvent(t3); 70 | 71 | temp = System.currentTimeMillis(); 72 | interval = temp - ct; 73 | ct = temp; 74 | timeVar += interval; 75 | runtime.setVariableValue("stdTime", timeVar); 76 | 77 | Timer t4 = new Timer(); 78 | t4.setId(4); 79 | t4.setTime(20); 80 | runtime.sendEvent(t4); 81 | 82 | Thread.sleep(3000); 83 | temp = System.currentTimeMillis(); 84 | interval = temp - ct; 85 | ct = temp; 86 | timeVar += interval; 87 | runtime.setVariableValue("stdTime", timeVar); 88 | 89 | Timer t5 = new Timer(); 90 | t5.setId(5); 91 | t5.setTime(20); 92 | runtime.sendEvent(t5); 93 | 94 | temp = System.currentTimeMillis(); 95 | temp = System.currentTimeMillis(); 96 | interval = temp - ct; 97 | ct = temp; 98 | timeVar += interval; 99 | runtime.setVariableValue("stdTime", timeVar); 100 | interval = temp - ct; 101 | ct = temp; 102 | timeVar += interval; 103 | runtime.setVariableValue("stdTime", timeVar); 104 | 105 | Timer t6 = new Timer(); 106 | t6.setId(6); 107 | t6.setTime(25); 108 | runtime.sendEvent(t6); 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ForTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 7/31/14. 13 | */ 14 | class ForEvent { 15 | 16 | private String name; 17 | private int age; 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public int getAge() { 28 | return age; 29 | } 30 | 31 | public void setAge(int age) { 32 | this.age = age; 33 | } 34 | 35 | public String toString() { 36 | return "ForEvent{" + "name='" + name + '\'' + ", age=" + age + '}'; 37 | } 38 | } 39 | 40 | class ForListener implements UpdateListener { 41 | 42 | // 用于记录调用次数 43 | private int num = 1; 44 | 45 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 46 | System.out.println("invocation: " + num++); 47 | if (newEvents != null) { 48 | for (int i = 0; i < newEvents.length; i++) { 49 | System.out.println(newEvents[i].getUnderlying()); 50 | } 51 | } 52 | } 53 | } 54 | 55 | public class ForTest { 56 | 57 | public static void main(String[] args) { 58 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 59 | EPAdministrator admin = epService.getEPAdministrator(); 60 | EPRuntime runtime = epService.getEPRuntime(); 61 | 62 | String forEvent = ForEvent.class.getName(); 63 | String select = "select * from " + forEvent + ".win:length_batch(3)"; 64 | String for1 = "select * from " + forEvent + ".win:length_batch(3) for grouped_delivery (age)"; 65 | String for2 = "select * from " + forEvent + ".win:length_batch(3) for discrete_delivery"; 66 | // not valid! because select clause isn't contain age 67 | // select name from ForEvent.win:lenght_batch(3) for grouped_delivery (age) 68 | 69 | ForEvent fe1 = new ForEvent(); 70 | fe1.setName("luo"); 71 | fe1.setAge(1); 72 | 73 | ForEvent fe2 = new ForEvent(); 74 | fe2.setName("nan"); 75 | fe2.setAge(2); 76 | 77 | ForEvent fe3 = new ForEvent(); 78 | fe3.setName("qin"); 79 | fe3.setAge(1); 80 | 81 | EPStatement stat1 = admin.createEPL(select); 82 | stat1.addListener(new ForListener()); 83 | System.out.println("select EPL1: " + select); 84 | 85 | System.out.println(); 86 | runtime.sendEvent(fe1); 87 | runtime.sendEvent(fe2); 88 | runtime.sendEvent(fe3); 89 | stat1.destroy(); 90 | System.out.println(); 91 | 92 | EPStatement stat2 = admin.createEPL(for1); 93 | stat2.addListener(new ForListener()); 94 | System.out.println("for EPL2: " + for1); 95 | 96 | System.out.println(); 97 | runtime.sendEvent(fe1); 98 | runtime.sendEvent(fe2); 99 | runtime.sendEvent(fe3); 100 | stat2.destroy(); 101 | System.out.println(); 102 | 103 | EPStatement stat3 = admin.createEPL(for2); 104 | stat3.addListener(new ForListener()); 105 | System.out.println("for EPL3: " + for2); 106 | 107 | System.out.println(); 108 | runtime.sendEvent(fe1); 109 | runtime.sendEvent(fe2); 110 | runtime.sendEvent(fe3); 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/GroupbyListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class GroupbyListener implements UpdateListener { 10 | 11 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 12 | if (newEvents != null) { 13 | System.out.println("==========RESULT=========="); 14 | for (EventBean event : newEvents) { 15 | String type = ""; 16 | int lastPrice = 0; 17 | List priceList = new ArrayList(); 18 | 19 | Object o1 = event.get("type"); 20 | if (o1 != null) { 21 | type = (String) o1; 22 | } 23 | Object o2 = event.get("lastPrice"); 24 | if (o2 != null) { 25 | lastPrice = (Integer) o2; 26 | } 27 | Object o3 = event.get("priceList"); 28 | if (o3 != null) { 29 | for (int price : (int[]) o3) { 30 | priceList.add(price); 31 | } 32 | } 33 | 34 | System.out.println("type: " + type + ", lastPrice: " + lastPrice + ", priceList: " + priceList); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/GroupbyTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Product; 9 | 10 | /** 11 | * 分组统计每个产品的价格列表,并返回每个产品的最新价格 12 | * 13 | * @author luonq(luonq@primeton.com) 14 | * 15 | */ 16 | public class GroupbyTest { 17 | 18 | public static void main(String[] args) { 19 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 20 | 21 | EPAdministrator admin = epService.getEPAdministrator(); 22 | 23 | // window只能用于stream的属性,不能用于stream,只有prevwindow可用于stream,详细可见SelectWindowEventTest例子 24 | String epl1 = "select type, window(price) as priceList, last(price) as lastPrice from " + Product.class.getName() 25 | + ".win:length_batch(5) group by type"; 26 | 27 | EPStatement state = admin.createEPL(epl1); 28 | state.addListener(new GroupbyListener()); 29 | 30 | EPRuntime runtime = epService.getEPRuntime(); 31 | 32 | Product p1 = new Product(); 33 | p1.setType("esb"); 34 | p1.setPrice(20); 35 | System.out.println("sendEvent: " + p1); 36 | runtime.sendEvent(p1); 37 | 38 | Product p2 = new Product(); 39 | p2.setType("eos"); 40 | p2.setPrice(30); 41 | System.out.println("sendEvent: " + p2); 42 | runtime.sendEvent(p2); 43 | 44 | Product p3 = new Product(); 45 | p3.setType("esb"); 46 | p3.setPrice(35); 47 | System.out.println("sendEvent: " + p3); 48 | runtime.sendEvent(p3); 49 | 50 | Product p4 = new Product(); 51 | p4.setType("bps"); 52 | p4.setPrice(40); 53 | System.out.println("sendEvent: " + p4); 54 | runtime.sendEvent(p4); 55 | 56 | Product p5 = new Product(); 57 | p5.setType("esb"); 58 | p5.setPrice(25); 59 | System.out.println("sendEvent: " + p5); 60 | runtime.sendEvent(p5); 61 | 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/IncreaseTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | import com.espertech.esper.client.EventBean; 12 | import com.espertech.esper.client.UpdateListener; 13 | 14 | import example.model.Product; 15 | import example.model.User; 16 | 17 | /** 18 | * 某个应用的性能数据(例如TPS、平均响应时间、mq队列深度、cpu、内存等)的值,在某个固定时间间隔内其值以某个百分数递增,或百分数递减,则报警。 19 | * 20 | * @author luonq(luonq@primeton.com) 21 | * 22 | */ 23 | class InputListener implements UpdateListener { 24 | 25 | private EPRuntime runtime; 26 | private Product[] ps = new Product[0]; 27 | private int count = 0; 28 | 29 | public InputListener(EPRuntime runtime) { 30 | this.runtime = runtime; 31 | } 32 | 33 | public synchronized void update(EventBean[] newEvents, EventBean[] oldEvents) { 34 | if (newEvents != null) { 35 | ps = (Product[]) newEvents[0].get("prevwindow(i)"); 36 | count = ps.length; 37 | } 38 | if (oldEvents != null) { 39 | for (int i = count - 1; i >= 0; i--) { 40 | Map event = new HashMap(); 41 | event.put("p", ps[i]); 42 | runtime.sendEvent(event, "S"); 43 | } 44 | 45 | int last = ps.length - oldEvents.length; 46 | Product[] temp = new Product[last]; 47 | for (int i = 0; i < last; i++) { 48 | temp[i] = ps[i]; 49 | } 50 | ps = temp; 51 | 52 | User u = new User(); 53 | runtime.sendEvent(u); 54 | 55 | Map scount = new HashMap(); 56 | scount.put("count", count); 57 | runtime.sendEvent(scount, "Scount"); 58 | 59 | count -= oldEvents.length; 60 | } 61 | } 62 | } 63 | 64 | class AcountListener implements UpdateListener { 65 | 66 | private EPRuntime runtime; 67 | 68 | public AcountListener(EPRuntime runtime) { 69 | this.runtime = runtime; 70 | } 71 | 72 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 73 | if (newEvents != null) { 74 | long count = (Long) newEvents[0].get("count(*)"); 75 | Map acount = new HashMap(); 76 | acount.put("count", (int) count); 77 | runtime.sendEvent(acount, "Acount"); 78 | } 79 | } 80 | } 81 | 82 | class Result3Listener implements UpdateListener { 83 | 84 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 85 | if (newEvents != null) { 86 | System.out.println("Clarm!!!!"); 87 | } 88 | } 89 | } 90 | 91 | public class IncreaseTest { 92 | 93 | /** 94 | * @param args 95 | */ 96 | public static void main(String[] args) { 97 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 98 | 99 | EPAdministrator admin = epService.getEPAdministrator(); 100 | 101 | Map mapDef = new HashMap(); 102 | mapDef.put("p", Product.class); 103 | 104 | Map mapDef1 = new HashMap(); 105 | mapDef1.put("count", int.class); 106 | 107 | admin.getConfiguration().addEventType("S", mapDef); 108 | admin.getConfiguration().addEventType("Scount", mapDef1); 109 | admin.getConfiguration().addEventType("Acount", mapDef1); 110 | 111 | EPRuntime runtime = epService.getEPRuntime(); 112 | 113 | String product = Product.class.getName(); 114 | String close = User.class.getName(); 115 | 116 | String input = "select irstream *, prevwindow(i) from " + product + ".win:time(5 sec) as i"; 117 | String window = "create window ABC.win:keepall() as select * from S"; 118 | String output = "insert into ABC select * from pattern[every a=S -[1]> b=S(b.p.price>=(a.p.price*1.05))]"; 119 | String acount = "on " + close + " select and delete count(*) from ABC"; 120 | String result = "every b=Acount -> every a=Scount(b.count+1=a.count)"; 121 | 122 | EPStatement state1 = admin.createEPL(input); 123 | state1.addListener(new InputListener(runtime)); 124 | admin.createEPL(window); 125 | admin.createEPL(output); 126 | EPStatement state2 = admin.createEPL(acount); 127 | state2.addListener(new AcountListener(runtime)); 128 | EPStatement state3 = admin.createPattern(result); 129 | state3.addListener(new Result3Listener()); 130 | 131 | Product esb = new Product(); 132 | esb.setPrice(1); 133 | esb.setType("esb"); 134 | runtime.sendEvent(esb); 135 | 136 | Product eos = new Product(); 137 | eos.setPrice(2); 138 | eos.setType("eos"); 139 | runtime.sendEvent(eos); 140 | 141 | Product esb1 = new Product(); 142 | esb1.setPrice(3); 143 | esb1.setType("esb"); 144 | runtime.sendEvent(esb1); 145 | 146 | Product eos1 = new Product(); 147 | eos1.setPrice(5); 148 | eos1.setType("eos"); 149 | runtime.sendEvent(eos1); 150 | 151 | Product esb2 = new Product(); 152 | esb2.setPrice(6); 153 | esb2.setType("esb"); 154 | runtime.sendEvent(esb2); 155 | 156 | Product eos3 = new Product(); 157 | eos3.setPrice(7); 158 | eos3.setType("eos"); 159 | runtime.sendEvent(eos3); 160 | 161 | System.out.println(); 162 | } 163 | 164 | } 165 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/InsertIntoListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class InsertIntoListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | EventBean event = newEvents[0]; 11 | System.out.println("type: " + event.get("t") + ", sum(price): " + event.get("sum(p)")); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/InsertIntoTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Product; 9 | 10 | /** 11 | * insert into子句需要最先定义,AllEvent表示select出来的内容被封装成此名字代表的事件,其中包含的p和t对应Product事件的price和type属性值 12 | * 监听器监听epl2,用于查看AllEvent的事件输入结果,当然也可以监听epl1的select内容。epl2的细节请参见StandardGroupWinTest例子 13 | * 14 | * @author luonanqin 15 | * 16 | */ 17 | public class InsertIntoTest { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 21 | 22 | EPAdministrator admin = epService.getEPAdministrator(); 23 | 24 | String product = Product.class.getName(); 25 | String epl1 = "insert into AllEvent(p,t) select price, type from " + product; 26 | String epl2 = "select sum(p), t from AllEvent.std:groupwin(t).win:length_batch(2) group by t"; 27 | 28 | admin.createEPL(epl1); 29 | EPStatement state = admin.createEPL(epl2); 30 | state.addListener(new InsertIntoListener()); 31 | 32 | EPRuntime runtime = epService.getEPRuntime(); 33 | 34 | Product esb = new Product(); 35 | esb.setPrice(1); 36 | esb.setType("esb"); 37 | System.out.println("sendEvent: " + esb); 38 | runtime.sendEvent(esb); 39 | 40 | Product eos = new Product(); 41 | eos.setPrice(2); 42 | eos.setType("eos"); 43 | System.out.println("sendEvent: " + eos); 44 | runtime.sendEvent(eos); 45 | 46 | Product esb1 = new Product(); 47 | esb1.setPrice(2); 48 | esb1.setType("esb"); 49 | System.out.println("sendEvent: " + esb1); 50 | runtime.sendEvent(esb1); 51 | 52 | Product eos1 = new Product(); 53 | eos1.setPrice(5); 54 | eos1.setType("eos"); 55 | System.out.println("sendEvent: " + eos1); 56 | runtime.sendEvent(eos1); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/InvocationMethodJava.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | /** 4 | * Created by Luonanqin on 2/16/14. 5 | */ 6 | 7 | class JavaObject { 8 | private String name; 9 | private int size; 10 | 11 | public String getName() { 12 | return name; 13 | } 14 | 15 | public void setName(String name) { 16 | this.name = name; 17 | } 18 | 19 | public int getSize() { 20 | return size; 21 | } 22 | 23 | public void setSize(int size) { 24 | this.size = size; 25 | } 26 | 27 | public String toString() { 28 | return "JavaObject{" + "name='" + name + '\'' + ", size=" + size + '}'; 29 | } 30 | } 31 | 32 | public class InvocationMethodJava { 33 | 34 | public static JavaObject[] getJavaObject(int times) { 35 | JavaObject[] javaObjects = new JavaObject[2]; 36 | JavaObject javaObject1 = new JavaObject(); 37 | javaObject1.setName("javaObject1"); 38 | javaObject1.setSize(1 * times); 39 | JavaObject javaObject2 = new JavaObject(); 40 | javaObject2.setName("javaObject2"); 41 | javaObject2.setSize(2 * times); 42 | 43 | javaObjects[0] = javaObject1; 44 | javaObjects[1] = javaObject2; 45 | 46 | return javaObjects; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/InvocationMethodMap.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * Created by Luonanqin on 2/16/14. 8 | */ 9 | public class InvocationMethodMap { 10 | 11 | public static Map getMapObject() { 12 | Map map = new HashMap(); 13 | map.put("name", "mapObject1"); 14 | map.put("size", 1); 15 | 16 | return map; 17 | } 18 | 19 | public static Map getMapObjectMetadata() { 20 | Map map = new HashMap(); 21 | map.put("name", String.class); 22 | map.put("size", int.class); 23 | 24 | return map; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/InvocationMethodTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.Iterator; 4 | 5 | import com.espertech.esper.client.EPAdministrator; 6 | import com.espertech.esper.client.EPRuntime; 7 | import com.espertech.esper.client.EPServiceProvider; 8 | import com.espertech.esper.client.EPServiceProviderManager; 9 | import com.espertech.esper.client.EPStatement; 10 | import com.espertech.esper.client.EventBean; 11 | import com.espertech.esper.client.UpdateListener; 12 | 13 | /** 14 | * Created by Luonanqin on 2/16/14. 15 | */ 16 | 17 | class Times { 18 | private int times; 19 | 20 | public int getTimes() { 21 | return times; 22 | } 23 | 24 | public void setTimes(int times) { 25 | this.times = times; 26 | } 27 | } 28 | 29 | class InvocationMethodListener implements UpdateListener { 30 | 31 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 32 | if (newEvents != null) { 33 | System.out.println(newEvents[0].getUnderlying()); 34 | System.out.println(newEvents[1].getUnderlying()); 35 | } 36 | } 37 | } 38 | 39 | public class InvocationMethodTest { 40 | public static void main(String arg[]) { 41 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 42 | EPRuntime runtime = epService.getEPRuntime(); 43 | EPAdministrator admin = epService.getEPAdministrator(); 44 | 45 | /** 46 | * 调用外部方法返回Java类数据 47 | */ 48 | String timesName = Times.class.getName(); 49 | String ijName = InvocationMethodJava.class.getName(); 50 | String epl1 = "select ij.* from " + timesName + " as t, method:" + ijName + ".getJavaObject(times) as ij"; 51 | System.out.println(epl1+"\n"); 52 | 53 | EPStatement state1 = admin.createEPL(epl1); 54 | state1.addListener(new InvocationMethodListener()); 55 | 56 | Times times = new Times(); 57 | times.setTimes(2); 58 | 59 | runtime.sendEvent(times); 60 | 61 | System.out.println(""); 62 | 63 | /** 64 | * 调用外部方法返回Map类型数据 65 | */ 66 | String imName = InvocationMethodMap.class.getName(); 67 | String epl2 = "select * from method:" + imName + ".getMapObject()"; 68 | System.out.println(epl2+"\n"); 69 | 70 | EPStatement state2 = admin.createEPL(epl2); 71 | Iterator iter = state2.iterator(); 72 | while (iter.hasNext()) { 73 | EventBean event = iter.next(); 74 | System.out.println(event.getUnderlying()); 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/IteratorSQLTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.Iterator; 4 | 5 | import com.espertech.esper.client.Configuration; 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | import com.espertech.esper.client.EventBean; 12 | 13 | /** 14 | * Created by Luonanqin on 4/17/14. 15 | */ 16 | public class IteratorSQLTest { 17 | 18 | public static void main(String[] args) throws InterruptedException { 19 | Configuration config = new Configuration(); 20 | config.configure("esper.examples.cfg.xml"); 21 | config.addVariable("vari", Integer.class, 1); 22 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 23 | 24 | EPAdministrator admin = epService.getEPAdministrator(); 25 | EPRuntime runtime = epService.getEPRuntime(); 26 | // id=1, name="luonq" 27 | String epl1 = "select id, name from sql:test['select id, name from test1 where id=${vari}']"; 28 | 29 | EPStatement state = admin.createEPL(epl1); 30 | 31 | Iterator iter = state.iterator(); // 也可以调用safeIterator方法,该方法以线程安全方式查询DB 32 | while (iter.hasNext()) { 33 | EventBean eventBean = iter.next(); 34 | System.out.println(eventBean.get("id") + " " + eventBean.get("name")); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/IteratorUpdateListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class IteratorUpdateListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/IteratorUpdateListenerTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.Iterator; 4 | 5 | import com.espertech.esper.client.EPAdministrator; 6 | import com.espertech.esper.client.EPServiceProvider; 7 | import com.espertech.esper.client.EPServiceProviderManager; 8 | import com.espertech.esper.client.EPStatement; 9 | import com.espertech.esper.client.UpdateListener; 10 | import example.model.Timer; 11 | 12 | /** 13 | * 遍历出监听某个epl的所有updateListener 14 | * 15 | * @author luonanqin 16 | * 17 | */ 18 | public class IteratorUpdateListenerTest { 19 | 20 | public static void main(String[] args) { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | 25 | String timer = Timer.class.getName(); 26 | String epl1 = "select * from " + timer; 27 | 28 | EPStatement state = admin.createEPL(epl1); 29 | state.addListener(new IteratorUpdateListener()); 30 | 31 | Iterator listeners = state.getUpdateListeners(); 32 | while (listeners.hasNext()) { 33 | System.out.println(listeners.next().getClass().getName()); 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/JoinContainedEventTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | import example.model.contained.Book; 11 | import example.model.contained.Books; 12 | import example.model.contained.Item; 13 | import example.model.contained.Items; 14 | import example.model.contained.MediaOrder; 15 | import example.model.contained.Review; 16 | 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | /** 21 | * Created by Luonanqin on 7/30/14. 22 | */ 23 | class JoinContainedListener implements UpdateListener { 24 | 25 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 26 | if (newEvents != null) { 27 | for (int i = 0; i < newEvents.length; i++) { 28 | if (newEvents[i] == null) { 29 | continue; 30 | } 31 | System.out.println(newEvents[i].getUnderlying()); 32 | } 33 | } 34 | } 35 | } 36 | 37 | public class JoinContainedEventTest { 38 | 39 | public static void main(String[] args) { 40 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 41 | EPAdministrator admin = epService.getEPAdministrator(); 42 | EPRuntime runtime = epService.getEPRuntime(); 43 | 44 | Review r1 = new Review(); 45 | r1.setReviewId(1); 46 | r1.setComment("r1"); 47 | 48 | Book b1 = new Book(); 49 | b1.setAuthor("b1"); 50 | b1.setBookId(1); 51 | b1.setReview(r1); 52 | 53 | Book b2 = new Book(); 54 | b2.setAuthor("b2"); 55 | b2.setBookId(2); 56 | b2.setReview(new Review()); 57 | 58 | Item i1 = new Item(); 59 | i1.setItemId(1); 60 | i1.setProductId(1); 61 | i1.setPrice(1.11); 62 | i1.setAmount(2); 63 | 64 | Item i2 = new Item(); 65 | i2.setItemId(3); 66 | i2.setProductId(3); 67 | i2.setPrice(3.11); 68 | i2.setAmount(5); 69 | 70 | MediaOrder mo1 = new MediaOrder(); 71 | Books bs = new Books(); 72 | Items is = new Items(); 73 | List items = new ArrayList(); 74 | List books = new ArrayList(); 75 | items.add(i1); 76 | items.add(i2); 77 | books.add(b1); 78 | books.add(b2); 79 | mo1.setOrderId(1); 80 | bs.setBook(books); 81 | is.setItem(items); 82 | mo1.setItems(is); 83 | mo1.setBooks(bs); 84 | 85 | String mediaOrder = MediaOrder.class.getName(); 86 | String join1 = "select book.bookId, item.itemId from " + mediaOrder + "[books.book] as book, " + mediaOrder 87 | + "[items.item] as item where productId = bookId"; 88 | 89 | EPStatement stat1 = admin.createEPL(join1); 90 | stat1.addListener(new JoinContainedListener()); 91 | 92 | System.out.println("EPL1: " + join1); 93 | runtime.sendEvent(mo1); 94 | stat1.destroy(); 95 | System.out.println(); 96 | 97 | String join2 = "select book.bookId, item.itemId from " + mediaOrder + "[books.book] as book left outer join " + mediaOrder 98 | + "[items.item] as item on productId = bookId"; 99 | 100 | EPStatement stat2 = admin.createEPL(join2); 101 | stat2.addListener(new JoinContainedListener()); 102 | 103 | System.out.println("EPL2: " + join2); 104 | runtime.sendEvent(mo1); 105 | stat2.destroy(); 106 | System.out.println(); 107 | 108 | String join3 = "select book.bookId, item.itemId from " + mediaOrder + "[books.book] as book full outer join " + mediaOrder 109 | + "[items.item] as item on productId = bookId"; 110 | 111 | EPStatement stat3 = admin.createEPL(join3); 112 | stat3.addListener(new JoinContainedListener()); 113 | 114 | System.out.println("EPL3: " + join3); 115 | runtime.sendEvent(mo1); 116 | stat3.destroy(); 117 | System.out.println(); 118 | 119 | String join4 = "select count(*) from " + mediaOrder + "[books.book] as book, " + mediaOrder 120 | + "[items.item] as item where productId = bookId"; 121 | 122 | EPStatement stat4 = admin.createEPL(join4); 123 | stat4.addListener(new JoinContainedListener()); 124 | 125 | System.out.println("EPL4: " + join4); 126 | runtime.sendEvent(mo1); 127 | runtime.sendEvent(mo1); 128 | stat4.destroy(); 129 | System.out.println(); 130 | 131 | String join5 = "select count(*) from " + mediaOrder + "[books.book] as book unidirectional, " + mediaOrder 132 | + "[items.item] as item where productId = bookId"; 133 | 134 | EPStatement stat5 = admin.createEPL(join5); 135 | stat5.addListener(new JoinContainedListener()); 136 | 137 | System.out.println("EPL5: " + join5); 138 | runtime.sendEvent(mo1); 139 | runtime.sendEvent(mo1); 140 | stat5.destroy(); 141 | System.out.println(); 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/JoinTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * join的各种用法 13 | * 14 | * @author luonanqin 15 | */ 16 | class NOKIA { 17 | private int price; 18 | private int size; 19 | 20 | public int getPrice() { 21 | return price; 22 | } 23 | 24 | public void setPrice(int price) { 25 | this.price = price; 26 | } 27 | 28 | public int getSize() { 29 | return size; 30 | } 31 | 32 | public void setSize(int size) { 33 | this.size = size; 34 | } 35 | } 36 | 37 | class Iphone { 38 | private int price; 39 | private int size; 40 | 41 | public int getPrice() { 42 | return price; 43 | } 44 | 45 | public void setPrice(int price) { 46 | this.price = price; 47 | } 48 | 49 | public int getSize() { 50 | return size; 51 | } 52 | 53 | public void setSize(int size) { 54 | this.size = size; 55 | } 56 | 57 | } 58 | 59 | class JoinListener implements UpdateListener { 60 | 61 | private String id; 62 | 63 | public JoinListener(String id) { 64 | this.id = id; 65 | } 66 | 67 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 68 | System.out.print(id+" "); 69 | if (newEvents != null) 70 | System.out.println(newEvents.length); 71 | } 72 | } 73 | 74 | public class JoinTest { 75 | 76 | public static void main(String[] args) throws InterruptedException { 77 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 78 | 79 | EPAdministrator admin = epService.getEPAdministrator(); 80 | 81 | /** 82 | * 左外连接:当满足条件的NOKIA事件到达后才能输出 83 | */ 84 | String epl1 = "select * from " + NOKIA.class.getName() + ".std:lastevent() as o left outer join " + Iphone.class.getName() 85 | + ".std:lastevent() as b on o.price = b.price"; 86 | 87 | /** 88 | * 右外链接:当满足条件的Iphone事件到达后才能输出 89 | */ 90 | String epl2 = "select * from " + NOKIA.class.getName() + ".std:lastevent() as o right outer join " + Iphone.class.getName() 91 | + ".std:lastevent() as b on o.price = b.price"; 92 | 93 | /** 94 | * 内连接:当满足条件的NOKIA和Iphone事件都出现时才能输出 95 | */ 96 | String epl3 = "select * from " + NOKIA.class.getName() + ".std:lastevent() as o inner join " + Iphone.class.getName() 97 | + ".std:lastevent() as b on o.price = b.price"; 98 | 99 | /** 100 | * 外连接:无论是否满足条件,进入的事件都可以立刻输出 101 | */ 102 | String epl4 = "select * from " + NOKIA.class.getName() + ".std:lastevent() as o full outer join " + Iphone.class.getName() 103 | + ".std:lastevent() as b on o.price = b.price"; 104 | 105 | EPStatement stat1 = admin.createEPL(epl1); 106 | stat1.addListener(new JoinListener("Left Outer Join")); 107 | EPStatement stat2 = admin.createEPL(epl2); 108 | stat2.addListener(new JoinListener("Right Outer Join")); 109 | EPStatement stat3 = admin.createEPL(epl3); 110 | stat3.addListener(new JoinListener("Inner Join")); 111 | EPStatement stat4 = admin.createEPL(epl4); 112 | stat4.addListener(new JoinListener("Full Outer Join")); 113 | System.out.println("Create epl successfully!"); 114 | 115 | EPRuntime runtime = epService.getEPRuntime(); 116 | 117 | NOKIA nokia2 = new NOKIA(); 118 | nokia2.setPrice(2); 119 | System.out.println("\nSend NOKIA2"); 120 | runtime.sendEvent(nokia2); 121 | 122 | NOKIA nokia1 = new NOKIA(); 123 | nokia1.setPrice(1); 124 | System.out.println("\nSend NOKIA1"); 125 | runtime.sendEvent(nokia1); 126 | 127 | NOKIA nokia3 = new NOKIA(); 128 | nokia3.setPrice(3); 129 | System.out.println("\nSend NOKIA3"); 130 | runtime.sendEvent(nokia3); 131 | 132 | NOKIA nokia4 = new NOKIA(); 133 | nokia4.setPrice(4); 134 | System.out.println("\nSend NOKIA4"); 135 | runtime.sendEvent(nokia4); 136 | 137 | Iphone iphone4 = new Iphone(); 138 | iphone4.setPrice(4); 139 | System.out.println("\nSend Iphone4"); 140 | runtime.sendEvent(iphone4); 141 | 142 | Iphone iphone2 = new Iphone(); 143 | iphone2.setPrice(2); 144 | System.out.println("\nSend Iphone2"); 145 | runtime.sendEvent(iphone2); 146 | 147 | Iphone iphone3 = new Iphone(); 148 | iphone3.setPrice(3); 149 | System.out.println("\nSend Iphone3"); 150 | runtime.sendEvent(iphone3); 151 | 152 | Iphone iphone1 = new Iphone(); 153 | iphone1.setPrice(1); 154 | System.out.println("\nSend Iphone1"); 155 | runtime.sendEvent(iphone1); 156 | } 157 | } 158 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/JoinUnidirectionalTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * unidirectional可以在join的时候使被其修饰的事件流无状态,只要来一个事件就可以出发join操作 13 | * 14 | * @author luonanqin 15 | * 16 | */ 17 | class Orange { 18 | private int price; 19 | 20 | public void setPrice(int price) { 21 | this.price = price; 22 | } 23 | 24 | public int getPrice() { 25 | return price; 26 | } 27 | 28 | public String toString() { 29 | return "Orange price=" + price; 30 | } 31 | } 32 | 33 | class Banana { 34 | private int price; 35 | 36 | public int getPrice() { 37 | return price; 38 | } 39 | 40 | public void setPrice(int price) { 41 | this.price = price; 42 | } 43 | 44 | public String toString() { 45 | return "Banana price=" + price; 46 | } 47 | } 48 | 49 | class JoinUnidirectionalListener implements UpdateListener { 50 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 51 | if (newEvents != null) { 52 | System.out.println(newEvents[0].get("o") + ", " + newEvents[0].get("b")); 53 | } 54 | } 55 | } 56 | 57 | public class JoinUnidirectionalTest { 58 | 59 | public static void main(String[] args) throws InterruptedException { 60 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 61 | 62 | EPAdministrator admin = epService.getEPAdministrator(); 63 | 64 | String epl1 = "select * from " + Orange.class.getName() + " as o unidirectional, " + Banana.class.getName() 65 | + ".std:lastevent() as b where o.price = b.price"; 66 | /* 67 | * unidirectional只能用于一个事件流 68 | */ 69 | // String epl1 = "select * from " + Orange.class.getName() + " as o unidirectional, " + Banana.class.getName() + 70 | // " as b unidirectional where o.price = b.price"; 71 | 72 | EPStatement stat = admin.createEPL(epl1); 73 | stat.addListener(new JoinUnidirectionalListener()); 74 | 75 | EPRuntime runtime = epService.getEPRuntime(); 76 | 77 | /* 78 | * Orange事件是无状态的,所以先进入的Orange事件发现没有满足join条件就立刻被移除了。 Banana事件到达后,因为之前的Orange事件已经被移除,所以仍然没有输出 79 | */ 80 | Orange o1 = new Orange(); 81 | o1.setPrice(1); 82 | System.out.println("Send Orange1"); 83 | runtime.sendEvent(o1); 84 | 85 | Banana b1 = new Banana(); 86 | b1.setPrice(1); 87 | System.out.println("Send Banana1"); 88 | runtime.sendEvent(b1); 89 | 90 | /* 91 | * Banana事件到达后,没有达到join条件,但是被暂存了起来 Orange事件是无状态的,所以进入的Orange事件发现有满足join条件的Banana,所以有输出。 92 | */ 93 | Banana b2 = new Banana(); 94 | b2.setPrice(2); 95 | System.out.println("Send Banana2"); 96 | runtime.sendEvent(b2); 97 | 98 | Orange o2 = new Orange(); 99 | o2.setPrice(2); 100 | System.out.println("Send Orange2"); 101 | runtime.sendEvent(o2); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/LimitFollowedTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 9/10/14. 13 | */ 14 | class LimitEvent { 15 | 16 | private int age; 17 | 18 | public int getAge() { 19 | return age; 20 | } 21 | 22 | public void setAge(int age) { 23 | this.age = age; 24 | } 25 | 26 | public String toString() { 27 | return "LimitEvent{" + "age=" + age + '}'; 28 | } 29 | } 30 | 31 | class LimitFollowedListener implements UpdateListener { 32 | 33 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 34 | if (newEvents != null) { 35 | System.out.println("\nResult: "); 36 | for (int i = 0; i < newEvents.length; i++) { 37 | EventBean event = newEvents[i]; 38 | System.out.println("a=" + event.get("a") + " b=" + event.get("b")); 39 | } 40 | 41 | System.out.println(); 42 | } 43 | } 44 | } 45 | 46 | public class LimitFollowedTest { 47 | 48 | public static void main(String[] args) { 49 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 50 | EPAdministrator admin = epService.getEPAdministrator(); 51 | EPRuntime runtime = epService.getEPRuntime(); 52 | 53 | String limit = LimitEvent.class.getName(); 54 | String follow = FollowedEvent.class.getName(); 55 | 56 | /* 在每次触发完成前最多只保留2个a事件,触发条件为b的size值大于a的age */ 57 | String epl = "every a=" + limit + " -[2]> b=" + follow + "(size > a.age)"; 58 | System.out.println("EPL: " + epl + "\n"); 59 | 60 | EPStatement stat = admin.createPattern(epl); 61 | stat.addListener(new LimitFollowedListener()); 62 | 63 | System.out.println("First Send!\n"); 64 | 65 | LimitEvent l1 = new LimitEvent(); 66 | l1.setAge(1); 67 | System.out.println("Send Event: " + l1); 68 | runtime.sendEvent(l1); 69 | 70 | LimitEvent l2 = new LimitEvent(); 71 | l2.setAge(2); 72 | System.out.println("Send Event: " + l2); 73 | runtime.sendEvent(l2); 74 | 75 | LimitEvent l3 = new LimitEvent(); 76 | l3.setAge(0); 77 | System.out.println("Send Event: " + l3); 78 | runtime.sendEvent(l3); 79 | 80 | FollowedEvent f1 = new FollowedEvent(); 81 | f1.setSize(3); 82 | System.out.println("Send Event: " + f1); 83 | runtime.sendEvent(f1); 84 | 85 | FollowedEvent f2 = new FollowedEvent(); 86 | f2.setSize(4); 87 | System.out.println("Send Event: " + f2); 88 | runtime.sendEvent(f2); 89 | 90 | System.out.println(); 91 | System.out.println("Second Send!\n"); 92 | System.out.println("Send Event: "+l1); 93 | runtime.sendEvent(l1); 94 | System.out.println("Send Event: " + f1); 95 | runtime.sendEvent(f1); 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/LogProcessListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class LogProcessListener implements UpdateListener { 7 | 8 | // @SuppressWarnings("unchecked") 9 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 10 | if (newEvents != null) { 11 | // System.out.println(); 12 | // Map[] results = (Map[]) (newEvents[0].get("logs")); 13 | // for (Map r : results) { 14 | // System.out.println(r); 15 | // } 16 | System.out.println(newEvents.length); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/LogProcessTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPOnDemandQueryResult; 8 | import com.espertech.esper.client.EPRuntime; 9 | import com.espertech.esper.client.EPServiceProvider; 10 | import com.espertech.esper.client.EPServiceProviderManager; 11 | import com.espertech.esper.client.EPStatement; 12 | import com.espertech.esper.client.EventBean; 13 | 14 | /** 15 | * 计算所有User的id和(模拟中间状态取出及状态注入) 16 | * 在计算user1和user2的id和之后,取出结果,并移除监听器。 17 | * 注册一个Map事件,即包含前两个user的id和,并注入该事件 18 | * 然后继续统计剩余user的id和 19 | * 20 | * @author luonq(luonq@primeton.com) 21 | * 22 | */ 23 | public class LogProcessTest { 24 | 25 | public static void main(String[] args) { 26 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 27 | 28 | EPAdministrator admin = epService.getEPAdministrator(); 29 | 30 | Map mapDef = new HashMap(); 31 | mapDef.put("batch", String.class); 32 | mapDef.put("eventNode", String.class); 33 | mapDef.put("eventNum", String.class); 34 | mapDef.put("eventTime", String.class); 35 | admin.getConfiguration().addEventType("Logger", mapDef); 36 | 37 | Map output = new HashMap(); 38 | output.put("batch", String.class); 39 | admin.getConfiguration().addEventType("OutputResult", output); 40 | 41 | // String context = "create context abc partition by batch from Logger(eventNode!='R'), batch from OutputResult"; 42 | String window = "create window LogWindow.win:time_batch(150 sec) as Logger"; 43 | String epl = "insert into LogWindow select * from Logger(eventNode!='R')"; 44 | String delete = "on OutputResult delete from LogWindow where OutputResult.batch = LogWindow.batch"; 45 | EPStatement state = admin.createEPL(window); 46 | state.addListener(new LogProcessListener()); 47 | 48 | admin.createEPL(epl); 49 | 50 | EPStatement state2 = admin.createEPL(delete); 51 | state2.addListener(new LogProcessListener()); 52 | 53 | EPRuntime runtime = epService.getEPRuntime(); 54 | 55 | Map log5 = new HashMap(); 56 | log5.put("batch", "1"); 57 | log5.put("eventNode", "T"); 58 | log5.put("eventNum", "5"); 59 | runtime.sendEvent(log5, "Logger"); 60 | 61 | Map log1 = new HashMap(); 62 | log1.put("batch", "1"); 63 | log1.put("eventNode", "I"); 64 | log1.put("eventNum", "1"); 65 | log1.put("eventTime", String.valueOf(System.currentTimeMillis())); 66 | runtime.sendEvent(log1, "Logger"); 67 | 68 | Map log2 = new HashMap(); 69 | log2.put("batch", "1"); 70 | log2.put("eventNode", "U"); 71 | log2.put("eventNum", "2"); 72 | runtime.sendEvent(log2, "Logger"); 73 | 74 | Map log3 = new HashMap(); 75 | log3.put("batch", "1"); 76 | log3.put("eventNode", "U"); 77 | log3.put("eventNum", "3"); 78 | runtime.sendEvent(log3, "Logger"); 79 | 80 | Map log4 = new HashMap(); 81 | log4.put("batch", "1"); 82 | log4.put("eventNode", "U"); 83 | log4.put("eventNum", "4"); 84 | runtime.sendEvent(log4, "Logger"); 85 | 86 | Map log6 = new HashMap(); 87 | log6.put("batch", "1"); 88 | log6.put("eventNode", "R"); 89 | log6.put("eventNum", "6"); 90 | runtime.sendEvent(log6, "Logger"); 91 | 92 | String query = "select * from LogWindow"; 93 | EPOnDemandQueryResult result = runtime.executeQuery(query); 94 | for (EventBean row : result.getArray()) { 95 | System.out.println(row.getUnderlying()); 96 | } 97 | 98 | Map o1 = new HashMap(); 99 | o1.put("batch", "1"); 100 | runtime.sendEvent(o1, "OutputResult"); 101 | 102 | String query2 = "select * from LogWindow"; 103 | EPOnDemandQueryResult result2 = runtime.executeQuery(query2); 104 | for (EventBean row : result2.getArray()) { 105 | System.out.println(row.getUnderlying()); 106 | } 107 | 108 | String query3 = "select * from LogWindow where batch = '1'"; 109 | EPOnDemandQueryResult result3 = runtime.executeQuery(query3); 110 | for (EventBean row : result3.getArray()) { 111 | System.out.println(row.getUnderlying()); 112 | } 113 | 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/LogView.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.Iterator; 4 | 5 | import com.espertech.esper.client.EventBean; 6 | import com.espertech.esper.client.EventType; 7 | import com.espertech.esper.view.ViewSupport; 8 | 9 | public class LogView extends ViewSupport { 10 | 11 | public void update(EventBean[] newData, EventBean[] oldData) { 12 | 13 | } 14 | 15 | public EventType getEventType() { 16 | return null; 17 | } 18 | 19 | public Iterator iterator() { 20 | return null; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/LogViewFactory.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.List; 4 | 5 | import com.espertech.esper.client.EventType; 6 | import com.espertech.esper.core.context.util.AgentInstanceViewFactoryChainContext; 7 | import com.espertech.esper.core.service.StatementContext; 8 | import com.espertech.esper.epl.expression.ExprNode; 9 | import com.espertech.esper.view.View; 10 | import com.espertech.esper.view.ViewFactory; 11 | import com.espertech.esper.view.ViewFactoryContext; 12 | import com.espertech.esper.view.ViewFactorySupport; 13 | import com.espertech.esper.view.ViewParameterException; 14 | 15 | public class LogViewFactory extends ViewFactorySupport { 16 | 17 | public void setViewParameters(ViewFactoryContext viewFactoryContext, List viewParameters) throws ViewParameterException { 18 | 19 | } 20 | 21 | public void attach(EventType parentEventType, StatementContext statementContext, ViewFactory optionalParentFactory, List parentViewFactories) 22 | throws ViewParameterException { 23 | 24 | } 25 | 26 | public View makeView(AgentInstanceViewFactoryChainContext agentInstanceViewFactoryContext) { 27 | return null; 28 | } 29 | 30 | public EventType getEventType() { 31 | return null; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/MapProcessListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class MapProcessListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | Object o1 = newEvents[0].get("id"); 11 | if (o1 != null) { 12 | int id = (Integer) o1; 13 | System.out.println("id: " + id); 14 | } 15 | Object o2 = newEvents[0].get("sumCount"); 16 | if (o2 != null) { 17 | int sumId = (Integer) o2; 18 | System.out.println("sumCount: " + sumId); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/MapProcessTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | 12 | /** 13 | * 展示如何定义map事件和处理方式 14 | * 15 | * @author luonq(luonq@primeton.com) 16 | * 17 | */ 18 | public class MapProcessTest { 19 | 20 | public static void main(String[] args) { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | Map mapDef = new HashMap(); 25 | mapDef.put("id", int.class); 26 | mapDef.put("count", int.class); 27 | admin.getConfiguration().addEventType("preSumIdEvent", mapDef); 28 | 29 | String epl1 = "select sum(count) as sumCount, id from preSumIdEvent.std:groupwin(id).win:length(2)"; 30 | 31 | EPStatement state = admin.createEPL(epl1); 32 | state.addListener(new MapProcessListener()); 33 | 34 | EPRuntime runtime = epService.getEPRuntime(); 35 | 36 | Map map1 = new HashMap(); 37 | map1.put("id", 1); 38 | map1.put("count", 1); 39 | runtime.sendEvent(map1, "preSumIdEvent"); 40 | 41 | Map map2 = new HashMap(); 42 | map2.put("id", 2); 43 | map2.put("count", 4); 44 | runtime.sendEvent(map2, "preSumIdEvent"); 45 | 46 | Map map3 = new HashMap(); 47 | map3.put("id", 2); 48 | map3.put("count", 3); 49 | runtime.sendEvent(map3, "preSumIdEvent"); 50 | 51 | Map map4 = new HashMap(); 52 | map4.put("id", 1); 53 | map4.put("count", 3); 54 | runtime.sendEvent(map4, "preSumIdEvent"); 55 | 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/MaxValueTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | import com.espertech.esper.client.EventBean; 12 | import com.espertech.esper.client.UpdateListener; 13 | import example.model.Product; 14 | 15 | /** 16 | * 某个应用的性能数据(例如TPS、平均响应时间、mq队列深度、cpu、内存等)的值,在某个固定时间间隔内其值持续 大于最大门限值或小于最小门限值,则报警。 17 | * 18 | * @author luonq(luonq@primeton.com) 19 | * 20 | */ 21 | class StdCountListener implements UpdateListener { 22 | 23 | private int num = 0; 24 | private EPRuntime runtime; 25 | private int n = 0; 26 | 27 | public StdCountListener(EPRuntime runtime) { 28 | this.runtime = runtime; 29 | } 30 | 31 | public synchronized void update(EventBean[] newEvents, EventBean[] oldEvents) { 32 | if (newEvents != null) { 33 | long temp = (Long) newEvents[0].get("prevcount(s)"); 34 | if (temp > n) { 35 | n = (int) temp; 36 | } 37 | } 38 | if (oldEvents != null) { 39 | Map event = new HashMap(); 40 | event.put("id", num); 41 | event.put("count", n); 42 | runtime.sendEvent(event, "S"); 43 | 44 | num++; 45 | int count = oldEvents.length; 46 | n -= count; 47 | } 48 | } 49 | } 50 | 51 | class ActCountListener implements UpdateListener { 52 | 53 | private int num = 0; 54 | private EPRuntime runtime; 55 | private Integer n = 0; 56 | 57 | public ActCountListener(EPRuntime runtime) { 58 | this.runtime = runtime; 59 | } 60 | 61 | public synchronized void update(EventBean[] newEvents, EventBean[] oldEvents) { 62 | if (newEvents != null) { 63 | long temp = (Long) newEvents[0].get("prevcount(a)"); 64 | if (temp > n) { 65 | n = (int) temp; 66 | } 67 | } 68 | if (oldEvents != null) { 69 | Map event = new HashMap(); 70 | event.put("id", num); 71 | event.put("count", n); 72 | runtime.sendEvent(event, "A"); 73 | 74 | num++; 75 | int oldCount = oldEvents.length; 76 | n -= oldCount; 77 | } 78 | } 79 | } 80 | 81 | class Result2Listener implements UpdateListener { 82 | 83 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 84 | if (newEvents != null) { 85 | System.out.println("Clarm!!!!"); 86 | } 87 | } 88 | } 89 | 90 | public class MaxValueTest { 91 | 92 | /** 93 | * @param args 94 | */ 95 | public static void main(String[] args) { 96 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 97 | 98 | EPAdministrator admin = epService.getEPAdministrator(); 99 | 100 | Map mapDef = new HashMap(); 101 | mapDef.put("id", int.class); 102 | mapDef.put("count", int.class); 103 | 104 | admin.getConfiguration().addEventType("S", mapDef); 105 | admin.getConfiguration().addEventType("A", mapDef); 106 | 107 | EPRuntime runtime = epService.getEPRuntime(); 108 | 109 | String product = Product.class.getName(); 110 | 111 | String stdCount = "select irstream *, prevcount(s) from " + product + ".win:time(10 sec) as s"; 112 | String actCount = "select irstream *, prevcount(a) from " + product + "(price > 0).win:time(10 sec) as a"; 113 | String result = "every (a=S -> b=A(a.id=b.id and a.count=b.count)) or every (b=A -> a=S(a.id=b.id and a.count=b.count))"; 114 | 115 | EPStatement state1 = admin.createEPL(stdCount); 116 | state1.addListener(new StdCountListener(runtime)); 117 | EPStatement state2 = admin.createEPL(actCount); 118 | state2.addListener(new ActCountListener(runtime)); 119 | EPStatement state3 = admin.createPattern(result); 120 | state3.addListener(new Result2Listener()); 121 | 122 | Product esb = new Product(); 123 | esb.setPrice(1); 124 | esb.setType("esb"); 125 | runtime.sendEvent(esb); 126 | 127 | Product eos = new Product(); 128 | eos.setPrice(2); 129 | eos.setType("eos"); 130 | runtime.sendEvent(eos); 131 | 132 | Product esb1 = new Product(); 133 | esb1.setPrice(2); 134 | esb1.setType("esb"); 135 | runtime.sendEvent(esb1); 136 | 137 | Product eos1 = new Product(); 138 | eos1.setPrice(5); 139 | eos1.setType("eos"); 140 | runtime.sendEvent(eos1); 141 | 142 | Product esb2 = new Product(); 143 | esb2.setPrice(3); 144 | esb2.setType("esb"); 145 | runtime.sendEvent(esb2); 146 | 147 | Product eos3 = new Product(); 148 | eos3.setPrice(6); 149 | eos3.setType("eos"); 150 | runtime.sendEvent(eos3); 151 | 152 | System.out.println(); 153 | } 154 | 155 | } 156 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/MySQLColumnTypeConvertor.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.hook.SQLColumnTypeContext; 4 | import com.espertech.esper.client.hook.SQLColumnTypeConversion; 5 | import com.espertech.esper.client.hook.SQLColumnValueContext; 6 | import com.espertech.esper.client.hook.SQLInputParameterContext; 7 | 8 | /** 9 | * Created by Luonanqin on 2/9/14. 10 | */ 11 | public class MySQLColumnTypeConvertor implements SQLColumnTypeConversion{ 12 | 13 | public Class getColumnType(SQLColumnTypeContext context) { 14 | Class clazz = context.getColumnClassType(); 15 | return clazz; 16 | } 17 | 18 | public Object getColumnValue(SQLColumnValueContext context) { 19 | Object obj = context.getColumnValue(); 20 | return obj; 21 | } 22 | 23 | public Object getParameterValue(SQLInputParameterContext context) { 24 | Object obj = context.getParameterValue(); 25 | return obj; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/MySQLOutputRowConvertor.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.hook.SQLOutputRowConversion; 4 | import com.espertech.esper.client.hook.SQLOutputRowTypeContext; 5 | import com.espertech.esper.client.hook.SQLOutputRowValueContext; 6 | 7 | import java.sql.ResultSet; 8 | import java.sql.SQLException; 9 | 10 | /** 11 | * Created by Luonanqin on 2/10/14. 12 | */ 13 | public class MySQLOutputRowConvertor implements SQLOutputRowConversion { 14 | 15 | // 设置输出内容的数据类型 16 | public Class getOutputRowType(SQLOutputRowTypeContext context) { 17 | return String.class; 18 | } 19 | 20 | // 返回转换后的内容 21 | public Object getOutputRow(SQLOutputRowValueContext context) { 22 | ResultSet result = context.getResultSet(); 23 | Object obj1 = null; 24 | Object obj2 = null; 25 | try { 26 | obj1 = result.getObject("id"); 27 | obj2 = result.getObject("name"); 28 | } catch (SQLException e) { 29 | e.printStackTrace(); 30 | } 31 | 32 | return obj1 + " and " + obj2; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnDeleteWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 3/30/14. 13 | */ 14 | 15 | class OnDeleteTrigger { 16 | private int trigger; 17 | 18 | public int getTrigger() { 19 | return trigger; 20 | } 21 | 22 | public void setTrigger(int trigger) { 23 | this.trigger = trigger; 24 | } 25 | 26 | public String toString() { 27 | return "trigger=" + trigger; 28 | } 29 | } 30 | 31 | class OnDeleteEvent { 32 | private String name; 33 | private int size; 34 | 35 | public String getName() { 36 | return name; 37 | } 38 | 39 | public void setName(String name) { 40 | this.name = name; 41 | } 42 | 43 | public int getSize() { 44 | return size; 45 | } 46 | 47 | public void setSize(int size) { 48 | this.size = size; 49 | } 50 | 51 | public String toString() { 52 | return "name=" + name + ", size=" + size; 53 | } 54 | } 55 | 56 | class OnDeleteWindowListener implements UpdateListener { 57 | 58 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 59 | if (newEvents != null) { 60 | System.out.println(); 61 | System.out.println("Trigger On Delete:"); 62 | System.out.println("There is " + newEvents.length + " OnDeleteEvent to be deleted in OnDeleteWindow!"); 63 | for (int i = 0; i < newEvents.length; i++) { 64 | System.out.println(newEvents[i].getUnderlying()); 65 | } 66 | } 67 | } 68 | } 69 | 70 | class OnSelectListener implements UpdateListener{ 71 | 72 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 73 | if (newEvents != null) { 74 | System.out.println(); 75 | System.out.println("Trigger On Select:"); 76 | System.out.println("There is " + newEvents.length + " OnDeleteEvent in OnDeleteWindow!"); 77 | for (int i = 0; i < newEvents.length; i++) { 78 | System.out.println(newEvents[i].getUnderlying()); 79 | } 80 | } 81 | } 82 | } 83 | 84 | public class OnDeleteWindowTest { 85 | public static void main(String[] args) { 86 | 87 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 88 | EPAdministrator admin = epService.getEPAdministrator(); 89 | EPRuntime runtime = epService.getEPRuntime(); 90 | 91 | String triggerEvent = OnDeleteTrigger.class.getName(); 92 | String deleteEvent = OnDeleteEvent.class.getName(); 93 | 94 | String epl1 = "create window OnDeleteWindow.win:keepall() as select * from " + deleteEvent; 95 | String epl2 = "insert into OnDeleteWindow select * from " + deleteEvent; 96 | String epl3 = "on " + triggerEvent + "(trigger>0) as odt delete from OnDeleteWindow as odw where odt.trigger=odw.size"; 97 | String epl4 = "on " + triggerEvent + "(trigger=0) select odw.* from OnDeleteWindow as odw"; 98 | 99 | System.out.println("Create Window:" + epl1); 100 | System.out.println("Delete Trigger sentence: " + epl3); 101 | System.out.println("Select Trigger sentence: " + epl4); 102 | System.out.println(); 103 | 104 | admin.createEPL(epl1); 105 | admin.createEPL(epl2); 106 | EPStatement state3 = admin.createEPL(epl3); 107 | state3.addListener(new OnDeleteWindowListener()); 108 | EPStatement state4 = admin.createEPL(epl4); 109 | state4.addListener(new OnSelectListener()); 110 | 111 | OnDeleteEvent ose1 = new OnDeleteEvent(); 112 | ose1.setName("ose1"); 113 | ose1.setSize(1); 114 | runtime.sendEvent(ose1); 115 | System.out.println("Send OnDeleteEvent 1: " + ose1); 116 | 117 | OnDeleteEvent ose2 = new OnDeleteEvent(); 118 | ose2.setName("ose2"); 119 | ose2.setSize(2); 120 | runtime.sendEvent(ose2); 121 | System.out.println("Send OnDeleteEvent 2: " + ose2); 122 | 123 | OnDeleteEvent ose3 = new OnDeleteEvent(); 124 | ose3.setName("ose3"); 125 | ose3.setSize(3); 126 | runtime.sendEvent(ose3); 127 | System.out.println("Send OnDeleteEvent 3: " + ose3); 128 | 129 | OnDeleteTrigger ost1 = new OnDeleteTrigger(); 130 | ost1.setTrigger(0); 131 | System.out.println("\nSend OnSelectTrigger " + ost1); 132 | runtime.sendEvent(ost1); 133 | 134 | OnDeleteTrigger ost2 = new OnDeleteTrigger(); 135 | ost2.setTrigger(2); 136 | System.out.println("\nSend OnDeleteTrigger " + ost2); 137 | runtime.sendEvent(ost2); 138 | 139 | OnDeleteTrigger ost3 = new OnDeleteTrigger(); 140 | ost3.setTrigger(0); 141 | System.out.println("\nSend OnSelectTrigger " + ost3); 142 | runtime.sendEvent(ost3); 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnMergeWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.io.Serializable; 4 | import java.util.HashMap; 5 | import java.util.Map; 6 | 7 | import com.espertech.esper.client.EPAdministrator; 8 | import com.espertech.esper.client.EPRuntime; 9 | import com.espertech.esper.client.EPServiceProvider; 10 | import com.espertech.esper.client.EPServiceProviderManager; 11 | import com.espertech.esper.client.EPStatement; 12 | import com.espertech.esper.client.EventBean; 13 | import com.espertech.esper.client.UpdateListener; 14 | 15 | /** 16 | * Created by Luonanqin on 4/8/14. 17 | */ 18 | class MergeEvent implements Serializable { 19 | 20 | private int mergeId; 21 | private String mergeStr; 22 | private int mergeSize; 23 | private boolean deleteFlag; 24 | 25 | public int getMergeId() { 26 | return mergeId; 27 | } 28 | 29 | public void setMergeId(int mergeId) { 30 | this.mergeId = mergeId; 31 | } 32 | 33 | public String getMergeStr() { 34 | return mergeStr; 35 | } 36 | 37 | public void setMergeStr(String mergeStr) { 38 | this.mergeStr = mergeStr; 39 | } 40 | 41 | public int getMergeSize() { 42 | return mergeSize; 43 | } 44 | 45 | public void setMergeSize(int mergeSize) { 46 | this.mergeSize = mergeSize; 47 | } 48 | 49 | public boolean isDeleteFlag() { 50 | return deleteFlag; 51 | } 52 | 53 | public void setDeleteFlag(boolean deleteFlag) { 54 | this.deleteFlag = deleteFlag; 55 | } 56 | 57 | public String toString() { 58 | return "mergeId=" + mergeId + ", mergeStr=" + mergeStr + ", mergeSize=" + mergeSize + ", deleteFlag=" + deleteFlag; 59 | } 60 | } 61 | 62 | class OnMergeWindowlistener implements UpdateListener { 63 | 64 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 65 | if (newEvents != null) { 66 | System.out.println("Trigger MergeWindow:"); 67 | for (int i = 0; i < newEvents.length; i++) { 68 | System.out.println(newEvents[i].getUnderlying()); 69 | } 70 | } 71 | } 72 | } 73 | 74 | class SelectLogWindowlistener implements UpdateListener { 75 | 76 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 77 | if (newEvents != null) { 78 | for (int i = 0; i < newEvents.length; i++) { 79 | System.out.println(newEvents[i].getUnderlying()); 80 | } 81 | } 82 | } 83 | } 84 | 85 | class SelectMergeWindowlistener implements UpdateListener { 86 | 87 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 88 | if (newEvents != null) { 89 | for (int i = 0; i < newEvents.length; i++) { 90 | System.out.println(newEvents[i].getUnderlying()); 91 | } 92 | } 93 | } 94 | } 95 | 96 | public class OnMergeWindowTest { 97 | 98 | public static void main(String[] args) { 99 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 100 | EPAdministrator admin = epService.getEPAdministrator(); 101 | EPRuntime runtime = epService.getEPRuntime(); 102 | 103 | String mergeEvent = MergeEvent.class.getName(); 104 | 105 | String epl1 = "create window MergeWindow.win:keepall() select * from " + mergeEvent; 106 | String epl2 = "create schema LogEvent as (id int, name string)"; 107 | String epl3 = "create window LogWindow.win:keepall() as LogEvent"; 108 | String epl4 = "on " + mergeEvent + "(mergeSize > 0) me merge MergeWindow mw where me.mergeId = mw.mergeId " 109 | + "when matched and me.deleteFlag = true then delete " 110 | + "when matched then update set mergeSize = mergeSize + me.mergeSize where mw.mergeSize > 3 " 111 | // MergeWindow中不存在的事件都会在触发merge时插入到window中,同时将部分属性插入到LogWindow中用于记录 112 | + "when not matched then insert select * then insert into LogWindow(id, name) select me.mergeId, me.mergeStr"; 113 | String epl5 = "on LogEvent(id=0) select lw.* from LogWindow as lw"; 114 | String epl6 = "on " + mergeEvent + "(mergeSize = 0) select mw.* from MergeWindow as mw"; 115 | 116 | System.out.println("Create Window: " + epl1); 117 | System.out.println("Merge Trigger: " + epl4); 118 | System.out.println(); 119 | 120 | admin.createEPL(epl1); 121 | admin.createEPL(epl2); 122 | admin.createEPL(epl3); 123 | EPStatement state1 = admin.createEPL(epl4); 124 | state1.addListener(new OnMergeWindowlistener()); 125 | EPStatement state2 = admin.createEPL(epl5); 126 | state2.addListener(new SelectLogWindowlistener()); 127 | EPStatement state3 = admin.createEPL(epl6); 128 | state3.addListener(new SelectMergeWindowlistener()); 129 | 130 | Map selectLog = new HashMap(); 131 | selectLog.put("id", 0); 132 | 133 | MergeEvent selectMerge = new MergeEvent(); 134 | selectMerge.setMergeSize(0); 135 | 136 | MergeEvent me1 = new MergeEvent(); 137 | me1.setDeleteFlag(false); 138 | me1.setMergeId(1); 139 | me1.setMergeSize(2); 140 | me1.setMergeStr("me1"); 141 | System.out.println("Send MergeEvent 1: " + me1); 142 | runtime.sendEvent(me1); 143 | 144 | MergeEvent me2 = new MergeEvent(); 145 | me2.setDeleteFlag(false); 146 | me2.setMergeId(2); 147 | me2.setMergeSize(3); 148 | me2.setMergeStr("me2"); 149 | System.out.println("Send MergeEvent 2: " + me2); 150 | runtime.sendEvent(me2); 151 | 152 | MergeEvent me3 = new MergeEvent(); 153 | me3.setDeleteFlag(false); 154 | me3.setMergeId(3); 155 | me3.setMergeSize(4); 156 | me3.setMergeStr("me3"); 157 | System.out.println("Send MergeEvent 3: " + me3); 158 | runtime.sendEvent(me3); 159 | 160 | /** 161 | * 查询之前插入的三个事件 162 | */ 163 | System.out.println("\nSend MergeEvent to Select MergeWindow!"); 164 | runtime.sendEvent(selectMerge); 165 | 166 | /** 167 | * 查询LogWindow中记录的MergeEvent部分属性 168 | */ 169 | System.out.println("\nSend LogEvent to Select LogWindow!"); 170 | runtime.sendEvent(selectLog, "LogEvent"); 171 | 172 | /** 173 | * 因为mergeId是3,所以MergeWindow中只有mergeId=3的事件有资格被更新。 并且mergeSize>3,所以可以执行更新操作。 174 | */ 175 | MergeEvent me4 = new MergeEvent(); 176 | me4.setDeleteFlag(false); 177 | me4.setMergeId(3); 178 | me4.setMergeSize(5); 179 | me4.setMergeStr("me4"); 180 | System.out.println("\nSend MergeEvent 4: " + me4); 181 | runtime.sendEvent(me4); 182 | 183 | System.out.println("\nSend MergeEvent to Select MergeWindow!"); 184 | runtime.sendEvent(selectMerge); 185 | 186 | /** 187 | * 因为mergeId是1,所以MergeWindow中只有mergeId=1的事件有资格被删除。 并且deleteFlag=true,所以mergeId=1的事件将从MergeWindow中移除 188 | */ 189 | MergeEvent me5 = new MergeEvent(); 190 | me5.setDeleteFlag(true); 191 | me5.setMergeId(1); 192 | me5.setMergeSize(6); 193 | me5.setMergeStr("me5"); 194 | System.out.println("\nSend MergeEvent 5: " + me5); 195 | runtime.sendEvent(me5); 196 | 197 | System.out.println("\nSend MergeEvent to Select MergeWindow!"); 198 | runtime.sendEvent(selectMerge); 199 | } 200 | } 201 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnSelectDeleteWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 3/29/14. 13 | */ 14 | class OnSelectDeleteTrigger { 15 | private int trigger; 16 | 17 | public int getTrigger() { 18 | return trigger; 19 | } 20 | 21 | public void setTrigger(int trigger) { 22 | this.trigger = trigger; 23 | } 24 | 25 | public String toString() { 26 | return "trigger=" + trigger; 27 | } 28 | } 29 | 30 | class OnSelectDeleteEvent { 31 | private String name; 32 | private int size; 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = name; 40 | } 41 | 42 | public int getSize() { 43 | return size; 44 | } 45 | 46 | public void setSize(int size) { 47 | this.size = size; 48 | } 49 | 50 | public String toString() { 51 | return "name=" + name + ", size=" + size; 52 | } 53 | } 54 | 55 | class OnSelectDeleteWindowListener implements UpdateListener { 56 | 57 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 58 | if (newEvents != null) { 59 | System.out.println(); 60 | System.out.println("Trigger On Select and Delete:"); 61 | System.out.println("There is " + newEvents.length + " OnSelectDeleteEvent in OnSelectDeleteWindow!"); 62 | for (int i = 0; i < newEvents.length; i++) { 63 | System.out.println(newEvents[i].getUnderlying()); 64 | } 65 | } 66 | } 67 | } 68 | 69 | public class OnSelectDeleteWindowTest { 70 | 71 | public static void main(String[] args) { 72 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 73 | EPAdministrator admin = epService.getEPAdministrator(); 74 | EPRuntime runtime = epService.getEPRuntime(); 75 | 76 | 77 | String triggerEvent = OnSelectDeleteTrigger.class.getName(); 78 | String selectDeleteEvent = OnSelectDeleteEvent.class.getName(); 79 | 80 | String epl1 = "create window OnSelectDeleteWindow.win:keepall() as select * from " + selectDeleteEvent; 81 | String epl2 = "insert into OnSelectDeleteWindow select * from " + selectDeleteEvent; 82 | String epl3 = "on " + triggerEvent + " select and delete osw.* from OnSelectDeleteWindow as osw"; 83 | 84 | System.out.println("Create Window:" + epl1); 85 | System.out.println("Trigger sentence: " + epl3); 86 | System.out.println(); 87 | 88 | admin.createEPL(epl1); 89 | admin.createEPL(epl2); 90 | EPStatement state3 = admin.createEPL(epl3); 91 | state3.addListener(new OnSelectDeleteWindowListener()); 92 | 93 | OnSelectDeleteEvent osde1 = new OnSelectDeleteEvent(); 94 | osde1.setName("osde1"); 95 | osde1.setSize(1); 96 | runtime.sendEvent(osde1); 97 | System.out.println("Send OnSelectDeleteEvent 1: " + osde1); 98 | 99 | OnSelectDeleteEvent osde2 = new OnSelectDeleteEvent(); 100 | osde2.setName("osde2"); 101 | osde2.setSize(2); 102 | runtime.sendEvent(osde2); 103 | System.out.println("Send OnSelectDeleteEvent 2: " + osde2); 104 | 105 | OnSelectDeleteEvent osde3 = new OnSelectDeleteEvent(); 106 | osde3.setName("osde3"); 107 | osde3.setSize(3); 108 | runtime.sendEvent(osde3); 109 | System.out.println("Send OnSelectDeleteEvent 3: " + osde3); 110 | 111 | OnSelectDeleteTrigger osdt1 = new OnSelectDeleteTrigger(); 112 | osdt1.setTrigger(1); 113 | System.out.println("Send OnSelectDeleteTrigger " + osdt1); 114 | runtime.sendEvent(osdt1); 115 | 116 | System.out.println(); 117 | 118 | OnSelectDeleteEvent osde4 = new OnSelectDeleteEvent(); 119 | osde4.setName("osde4"); 120 | osde4.setSize(4); 121 | System.out.println("Send OnSelectDeleteEvent 4: " + osde4); 122 | runtime.sendEvent(osde4); 123 | 124 | OnSelectDeleteTrigger osdt2 = new OnSelectDeleteTrigger(); 125 | osdt2.setTrigger(1); 126 | System.out.println("Send OnSelectDeleteTrigger " + osdt2); 127 | runtime.sendEvent(osdt2); 128 | } 129 | } 130 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnSelectWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 3/29/14. 13 | */ 14 | class OnSelectTrigger { 15 | private int trigger; 16 | 17 | public int getTrigger() { 18 | return trigger; 19 | } 20 | 21 | public void setTrigger(int trigger) { 22 | this.trigger = trigger; 23 | } 24 | 25 | public String toString() { 26 | return "trigger=" + trigger; 27 | } 28 | } 29 | 30 | class OnSelectEvent { 31 | private String name; 32 | private int size; 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = name; 40 | } 41 | 42 | public int getSize() { 43 | return size; 44 | } 45 | 46 | public void setSize(int size) { 47 | this.size = size; 48 | } 49 | 50 | public String toString() { 51 | return "name=" + name + ", size=" + size; 52 | } 53 | } 54 | 55 | class OnSelectWindowListener implements UpdateListener { 56 | 57 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 58 | if (newEvents != null) { 59 | System.out.println("Trigger On Select:"); 60 | System.out.println("There is " + newEvents.length + " OnSelectEvent in OnSelectWindow!"); 61 | for (int i = 0; i < newEvents.length; i++) { 62 | System.out.println(newEvents[i].getUnderlying()); 63 | } 64 | } 65 | } 66 | } 67 | 68 | public class OnSelectWindowTest { 69 | 70 | public static void main(String[] args) { 71 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 72 | EPAdministrator admin = epService.getEPAdministrator(); 73 | EPRuntime runtime = epService.getEPRuntime(); 74 | 75 | String triggerEvent = OnSelectTrigger.class.getName(); 76 | String selectEvent = OnSelectEvent.class.getName(); 77 | 78 | // win:keepall()使named window中的事件一直保留 79 | // String epl1 = "create window OnSelectWindow.win:keepall() as select * from " + selectEvent; 80 | String epl1 = "create window OnSelectWindow.win:length(2) as select * from " + selectEvent; 81 | String epl2 = "insert into OnSelectWindow select * from " + selectEvent; 82 | String epl3 = "on " + triggerEvent + "(trigger>=2) select osw.* from OnSelectWindow as osw"; 83 | 84 | System.out.println("Create Window:" + epl1); 85 | System.out.println("Trigger sentence: " + epl3); 86 | System.out.println(); 87 | 88 | admin.createEPL(epl1); 89 | admin.createEPL(epl2); 90 | EPStatement state3 = admin.createEPL(epl3); 91 | state3.addListener(new OnSelectWindowListener()); 92 | 93 | OnSelectEvent ose1 = new OnSelectEvent(); 94 | ose1.setName("ose1"); 95 | ose1.setSize(1); 96 | runtime.sendEvent(ose1); 97 | System.out.println("Send OnSelectEvent 1: " + ose1); 98 | 99 | OnSelectEvent ose2 = new OnSelectEvent(); 100 | ose2.setName("ose2"); 101 | ose2.setSize(2); 102 | runtime.sendEvent(ose2); 103 | System.out.println("Send OnSelectEvent 2: " + ose2); 104 | 105 | OnSelectEvent ose3 = new OnSelectEvent(); 106 | ose3.setName("ose3"); 107 | ose3.setSize(3); 108 | runtime.sendEvent(ose3); 109 | System.out.println("Send OnSelectEvent 3: " + ose3); 110 | 111 | OnSelectTrigger ost1 = new OnSelectTrigger(); 112 | ost1.setTrigger(1); 113 | System.out.println("Send OnSelectTrigger " + ost1); 114 | runtime.sendEvent(ost1); 115 | 116 | OnSelectTrigger ost2 = new OnSelectTrigger(); 117 | ost2.setTrigger(2); 118 | System.out.println("Send OnSelectTrigger " + ost2 + "\n"); 119 | runtime.sendEvent(ost2); 120 | 121 | System.out.println(); 122 | 123 | String epl4 = "on OnSelectWindow select osw.* from OnSelectWindow as osw"; 124 | EPStatement state4 = admin.createEPL(epl4); 125 | state4.addListener(new OnSelectWindowListener()); 126 | 127 | System.out.println("Trigger sentence: " + epl4 + "\n"); 128 | 129 | OnSelectEvent ose4 = new OnSelectEvent(); 130 | ose4.setName("ose4"); 131 | ose4.setSize(4); 132 | System.out.println("Send OnSelectEvent 4(also a Trigger): " + ose4 + "\n"); 133 | runtime.sendEvent(ose4); 134 | 135 | System.out.println(); 136 | OnSelectEvent ose5 = new OnSelectEvent(); 137 | ose5.setName("ose5"); 138 | ose5.setSize(5); 139 | System.out.println("Send OnSelectEvent 5(also a Trigger): " + ose5 + "\n"); 140 | runtime.sendEvent(ose5); 141 | } 142 | } 143 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnSetVariableTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 4/26/14. 13 | */ 14 | class SetVariableEvent { 15 | 16 | private String name; 17 | 18 | public String getName() { 19 | return name; 20 | } 21 | 22 | public void setName(String name) { 23 | this.name = name; 24 | } 25 | } 26 | 27 | class SetVariableListener implements UpdateListener { 28 | 29 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 30 | if (newEvents != null) { 31 | for (int i = 0; i < newEvents.length; i++) { 32 | EventBean newEvent = newEvents[i]; 33 | System.out.println(newEvent.get("v")); 34 | } 35 | } 36 | } 37 | } 38 | 39 | public class OnSetVariableTest { 40 | 41 | public static void main(String[] args) { 42 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 43 | EPAdministrator admin = epService.getEPAdministrator(); 44 | EPRuntime runtime = epService.getEPRuntime(); 45 | 46 | String variEvent = SetVariableEvent.class.getName(); 47 | 48 | String epl1 = "create variable String Variable1 = 'Variable1'"; 49 | String epl2 = "create variable int Variable2 = 2"; 50 | String epl3 = "on " + variEvent + " as ve set Variable1 = ve.name, Variable2 = 3"; 51 | 52 | admin.createEPL(epl1); 53 | admin.createEPL(epl2); 54 | admin.createEPL(epl3); 55 | EPStatement statement1 = admin.createEPL("select Variable1 as v from " + variEvent); 56 | statement1.addListener(new SetVariableListener()); 57 | EPStatement statement2 = admin.createEPL("select Variable2 as v from " + variEvent); 58 | statement2.addListener(new SetVariableListener()); 59 | 60 | SetVariableEvent ve = new SetVariableEvent(); 61 | ve.setName("VariableEvent"); 62 | runtime.sendEvent(ve); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/OnUpdateWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.io.Serializable; 4 | 5 | import com.espertech.esper.client.EPAdministrator; 6 | import com.espertech.esper.client.EPRuntime; 7 | import com.espertech.esper.client.EPServiceProvider; 8 | import com.espertech.esper.client.EPServiceProviderManager; 9 | import com.espertech.esper.client.EPStatement; 10 | import com.espertech.esper.client.EventBean; 11 | import com.espertech.esper.client.UpdateListener; 12 | 13 | /** 14 | * Created by Luonanqin on 4/5/14. 15 | */ 16 | class OnUpdateTrigger { 17 | private int trigger; 18 | 19 | public int getTrigger() { 20 | return trigger; 21 | } 22 | 23 | public void setTrigger(int trigger) { 24 | this.trigger = trigger; 25 | } 26 | 27 | public String toString() { 28 | return "trigger=" + trigger; 29 | } 30 | } 31 | 32 | class OnUpdateEvent implements Serializable{ 33 | private String name; 34 | private int size; 35 | private int price; 36 | 37 | public int getPrice() { 38 | return price; 39 | } 40 | 41 | public void setPrice(int price) { 42 | this.price = price; 43 | } 44 | 45 | public String getName() { 46 | return name; 47 | } 48 | 49 | public void setName(String name) { 50 | this.name = name; 51 | } 52 | 53 | public int getSize() { 54 | return size; 55 | } 56 | 57 | public void setSize(int size) { 58 | this.size = size; 59 | } 60 | 61 | public String toString() { 62 | return "name=" + name + ", size=" + size + ", price=" + price; 63 | } 64 | } 65 | 66 | class OnUpdateWindowListener implements UpdateListener { 67 | 68 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 69 | if (newEvents != null) { 70 | System.out.println(); 71 | System.out.println("Trigger On Update:"); 72 | System.out.println("There is " + newEvents.length + " to be updated in OnUpdateWindow!"); 73 | for (int i = 0; i < newEvents.length; i++) { 74 | System.out.println(newEvents[i].getUnderlying()); 75 | } 76 | } 77 | } 78 | } 79 | 80 | class OnUpdateSelectWindowListener implements UpdateListener { 81 | 82 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 83 | if (newEvents != null) { 84 | System.out.println(); 85 | System.out.println("Trigger On Select:"); 86 | System.out.println("There is " + newEvents.length + " OnUpdateEvent in OnUpdateWindow!"); 87 | for (int i = 0; i < newEvents.length; i++) { 88 | System.out.println(newEvents[i].getUnderlying()); 89 | } 90 | } 91 | } 92 | } 93 | 94 | public class OnUpdateWindowTest { 95 | public static void main(String[] args) { 96 | 97 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 98 | EPAdministrator admin = epService.getEPAdministrator(); 99 | EPRuntime runtime = epService.getEPRuntime(); 100 | 101 | String triggerEvent = OnUpdateTrigger.class.getName(); 102 | String updateEvent = OnUpdateEvent.class.getName(); 103 | 104 | String epl1 = "create window OnUpdateWindow.win:keepall() as select * from " + updateEvent; 105 | String epl2 = "insert into OnUpdateWindow select * from " + updateEvent; 106 | String epl3 = "on " + triggerEvent + "(trigger>0) as out update OnUpdateWindow as ouw set size=out.trigger, price=initial.size where out.trigger 2))"; 107 | System.out.println("EPL2: " + epl2 + "\n"); 108 | 109 | EPStatement stat2 = admin.createPattern(epl2); 110 | stat2.addListener(new PatternConsumeListener2()); 111 | 112 | ConsumeEvent ce3 = new ConsumeEvent(); 113 | ce3.setId(1); 114 | ce3.setName("luonq"); 115 | ce3.setAge(3); 116 | System.out.println("Send Event: " + ce3); 117 | runtime.sendEvent(ce3); 118 | 119 | ConsumeEvent ce4 = new ConsumeEvent(); 120 | ce4.setId(1); 121 | ce4.setName("luonqin"); 122 | ce4.setAge(1); 123 | System.out.println("Send Event: " + ce4); 124 | runtime.sendEvent(ce4); 125 | 126 | ConsumeEvent ce5 = new ConsumeEvent(); 127 | ce5.setId(3); 128 | ce5.setName("luonqin"); 129 | ce5.setAge(5); 130 | System.out.println("Send Event: " + ce5); 131 | runtime.sendEvent(ce5); 132 | } 133 | } 134 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/PatternFollowedTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 9/5/14. 13 | */ 14 | class FollowedEvent { 15 | 16 | private int size; 17 | 18 | public int getSize() { 19 | return size; 20 | } 21 | 22 | public void setSize(int size) { 23 | this.size = size; 24 | } 25 | 26 | public String toString() { 27 | return "FollowedEvent{" + "size=" + size + '}'; 28 | } 29 | } 30 | 31 | class PatternFollowedListener implements UpdateListener { 32 | 33 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 34 | if (newEvents != null) { 35 | for (int i = 0; i < newEvents.length; i++) { 36 | System.out.println(); 37 | EventBean event = newEvents[i]; 38 | System.out.println("Result:"); 39 | System.out.println(event.get("a") + " " + event.get("b")); 40 | } 41 | } 42 | } 43 | } 44 | 45 | public class PatternFollowedTest { 46 | 47 | public static void main(String[] args) { 48 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 49 | EPAdministrator admin = epService.getEPAdministrator(); 50 | EPRuntime runtime = epService.getEPRuntime(); 51 | 52 | String followed = FollowedEvent.class.getName(); 53 | 54 | String epl = "select * from pattern[every a=" + followed + " -> b=" + followed + "(size < a.size)]"; 55 | System.out.println("EPL: " + epl + "\n"); 56 | EPStatement stat = admin.createEPL(epl); 57 | stat.addListener(new PatternFollowedListener()); 58 | 59 | FollowedEvent f1 = new FollowedEvent(); 60 | f1.setSize(1); 61 | System.out.println("Send Event1: " + f1); 62 | runtime.sendEvent(f1); 63 | System.out.println(); 64 | 65 | FollowedEvent f2 = new FollowedEvent(); 66 | f2.setSize(3); 67 | System.out.println("Send Event2: " + f2); 68 | runtime.sendEvent(f2); 69 | System.out.println(); 70 | 71 | FollowedEvent f3 = new FollowedEvent(); 72 | f3.setSize(2); 73 | System.out.println("Send Event3: " + f3); 74 | runtime.sendEvent(f3); 75 | 76 | FollowedEvent f4 = new FollowedEvent(); 77 | f4.setSize(0); 78 | System.out.println("Send Event4: " + f4); 79 | runtime.sendEvent(f4); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/PatternTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Fruit; 9 | 10 | /** 11 | * 12 | * @author luonanqin 13 | * 14 | */ 15 | public class PatternTest { 16 | 17 | @SuppressWarnings("unused") 18 | public static void main(String[] args) throws InterruptedException { 19 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 20 | 21 | EPAdministrator admin = epService.getEPAdministrator(); 22 | 23 | String fruit = Fruit.class.getName(); 24 | String pattern1 = ""; 25 | String epl1 = "every p1=" + fruit + " -> p2=" + fruit + "(p1.price>p2.price)"; 26 | EPStatement state = admin.createPattern(epl1, "epl1"); 27 | 28 | state.addListener(new PattenListener()); 29 | 30 | EPRuntime runtime = epService.getEPRuntime(); 31 | 32 | Fruit apple = new Fruit(); 33 | apple.setName("apple"); 34 | apple.setPrice(50); 35 | runtime.sendEvent(apple); 36 | 37 | Fruit orange = new Fruit(); 38 | orange.setName("orange"); 39 | orange.setPrice(55); 40 | runtime.sendEvent(orange); 41 | 42 | Fruit banana = new Fruit(); 43 | banana.setName("banana"); 44 | banana.setPrice(48); 45 | runtime.sendEvent(banana); 46 | 47 | Fruit pink = new Fruit(); 48 | pink.setName("pink"); 49 | pink.setPrice(47); 50 | runtime.sendEvent(pink); 51 | 52 | Fruit pear = new Fruit(); 53 | pear.setName("pear"); 54 | pear.setPrice(43); 55 | runtime.sendEvent(pear); 56 | 57 | Fruit peach = new Fruit(); 58 | peach.setName("peach"); 59 | peach.setPrice(46); 60 | runtime.sendEvent(peach); 61 | 62 | Fruit strawberry = new Fruit(); 63 | strawberry.setName("strawberry"); 64 | strawberry.setPrice(43); 65 | runtime.sendEvent(strawberry); 66 | 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/PojoInterfaceEventTypeTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 4/16/14. 13 | */ 14 | class Parent { 15 | 16 | private int id; 17 | public Child child; 18 | 19 | public int getId() { 20 | return id; 21 | } 22 | 23 | public void setId(int id) { 24 | this.id = id; 25 | } 26 | 27 | public Child getChild() { 28 | return child; 29 | } 30 | 31 | public void setChild(Child child) { 32 | this.child = child; 33 | } 34 | 35 | public String toString() { 36 | return "Parent: " + id + ", Child: " + child; 37 | } 38 | } 39 | 40 | interface Child { 41 | 42 | public int getAge(); 43 | } 44 | 45 | class XiaoMing implements Child { 46 | 47 | private int age; 48 | private String name; 49 | 50 | public void setAge(int age) { 51 | this.age = age; 52 | } 53 | 54 | public int getAge() { 55 | return age; 56 | } 57 | 58 | public String getName() { 59 | return name; 60 | } 61 | 62 | public void setName(String name) { 63 | this.name = name; 64 | } 65 | 66 | public String toString() { 67 | return "name=" + name + ", age=" + age; 68 | } 69 | } 70 | 71 | class PojoInterfaceEventTypeListener implements UpdateListener { 72 | 73 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 74 | if (newEvents != null) { 75 | System.out.println("\nTrigger Listener!"); 76 | for (int i = 0; i < newEvents.length; i++) { 77 | EventBean newEvent = newEvents[i]; 78 | System.out.println(newEvent.getUnderlying()); 79 | } 80 | } 81 | } 82 | } 83 | 84 | public class PojoInterfaceEventTypeTest { 85 | 86 | public static void main(String[] args) { 87 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 88 | EPAdministrator admin = epService.getEPAdministrator(); 89 | EPRuntime runtime = epService.getEPRuntime(); 90 | 91 | String parent = Parent.class.getName(); 92 | String epl1 = "select * from " + parent + "(child.age > 3)"; 93 | EPStatement state1 = admin.createEPL(epl1); 94 | state1.addListener(new PojoInterfaceEventTypeListener()); 95 | 96 | System.out.println("EPL: " + epl1 + "\n"); 97 | 98 | XiaoMing xm1 = new XiaoMing(); 99 | xm1.setName("xm1"); 100 | xm1.setAge(2); 101 | 102 | XiaoMing xm2 = new XiaoMing(); 103 | xm2.setName("xm2"); 104 | xm2.setAge(5); 105 | 106 | Parent p1 = new Parent(); 107 | p1.setChild(xm1); 108 | p1.setId(1); 109 | System.out.println("Send Parent " + p1.getId() + ": child is " + xm1); 110 | runtime.sendEvent(p1); 111 | 112 | Parent p2 = new Parent(); 113 | p2.setChild(xm2); 114 | p2.setId(2); 115 | System.out.println("Send Parent " + p2.getId() + ": child is " + xm2); 116 | runtime.sendEvent(p2); 117 | } 118 | } 119 | /* Result: 120 | EPL: select * from example.Parent(child.age > 3) 121 | 122 | Send Parent 1: child is name=xm1, age=2 123 | Send Parent 2: child is name=xm2, age=5 124 | 125 | Trigger Listener! 126 | Parent: 2, Child: name=xm2, age=5 127 | */ 128 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/PreparedStatementTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPPreparedStatement; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.User; 9 | 10 | /** 11 | * 预定义EPL语句,即preparedEPL,然后传递参数给占位符,最后转为EPL 12 | * 13 | * @author luonq(luonq@primeton.com) 14 | * 15 | */ 16 | public class PreparedStatementTest { 17 | 18 | public static void main(String[] args) { 19 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 20 | 21 | EPAdministrator admin = epService.getEPAdministrator(); 22 | 23 | String preEpl = "select ? from " + User.class.getName() + ".win:length(?)"; 24 | EPPreparedStatement pstat = admin.prepareEPL(preEpl); 25 | System.out.println("preparedEPL: " + preEpl); 26 | pstat.setObject(1, "irstream id"); 27 | pstat.setObject(2, 5); 28 | 29 | EPStatement stat = admin.create(pstat); 30 | System.out.println("EPL: " + stat.getText()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ReplaylastResultTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.SafeIterator; 10 | import example.model.User; 11 | 12 | /** 13 | * 重现上一个/上一批事件的处理结果 14 | * 这里重现的是view中两个User的id和,在新event进入后,可得到进入前view中User产生的事件处理结果 15 | * 16 | * @author luonq(luonq@primeton.com) 17 | * 18 | */ 19 | public class ReplaylastResultTest { 20 | 21 | public static void main(String[] args) { 22 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 23 | 24 | EPAdministrator admin = epService.getEPAdministrator(); 25 | 26 | String epl1 = "select avg(id) as aid from " + User.class.getName() + ".win:length(2)"; 27 | 28 | EPStatement state = admin.createEPL(epl1); 29 | state.addListenerWithReplay(new ResultListener()); 30 | 31 | EPRuntime runtime = epService.getEPRuntime(); 32 | 33 | User user1 = new User(); 34 | user1.setId(1); 35 | System.out.println("sendEvent: " + user1); 36 | runtime.sendEvent(user1); 37 | 38 | safeCurrentEventResult(state); 39 | 40 | User user2 = new User(); 41 | user2.setId(3); 42 | System.out.println("sendEvent: " + user2); 43 | runtime.sendEvent(user2); 44 | 45 | safeCurrentEventResult(state); 46 | 47 | User user3 = new User(); 48 | user3.setId(5); 49 | System.out.println("sendEvent: " + user3); 50 | runtime.sendEvent(user3); 51 | 52 | safeCurrentEventResult(state); 53 | 54 | User user4 = new User(); 55 | user4.setId(5); 56 | System.out.println("sendEvent: " + user4); 57 | runtime.sendEvent(user4); 58 | 59 | safeCurrentEventResult(state); 60 | } 61 | 62 | public static void safeCurrentEventResult(EPStatement state) { 63 | SafeIterator events = state.safeIterator(); 64 | while (events.hasNext()) { 65 | EventBean event = events.next(); 66 | System.out.println("replayResult: " + event.get("aid")); 67 | } 68 | events.close(); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ResultListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class ResultListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | Object obj = newEvents[0].get("aid"); 11 | if (obj != null) { 12 | double id = (Double) obj; 13 | System.out.println("currentResult: " + id); 14 | } 15 | } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SQLColumnTypeConversionTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.Configuration; 4 | import com.espertech.esper.client.EPAdministrator; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | 10 | import java.util.Iterator; 11 | 12 | /** 13 | * MySQLColumnTypeConvertor必须为public类,不然无法实例化。 Esper会为每一个EPL提供一个Convertor实例 14 | *

15 | * Created by Luonanqin on 2/9/14. 16 | */ 17 | public class SQLColumnTypeConversionTest { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | Configuration config = new Configuration(); 21 | config.configure("esper.examples.cfg.xml"); 22 | config.addVariable("vari", Integer.class, 1); 23 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 24 | 25 | EPAdministrator admin = epService.getEPAdministrator(); 26 | // id=1, name="luonq" 27 | String epl1 = "@Hook(type=HookType.SQLCOL, hook='" + MySQLColumnTypeConvertor.class.getName() 28 | + "')select id, name from sql:test['select id, name from test1 where id=${vari}']"; 29 | System.out.println(epl1); 30 | EPStatement state1 = admin.createEPL(epl1); 31 | 32 | Iterator iter = state1.iterator(); 33 | while (iter.hasNext()) { 34 | EventBean eventBean = iter.next(); 35 | System.out.println(eventBean.get("id") + " " + eventBean.get("name")); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SQLOutputRowConversionTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.Configuration; 4 | import com.espertech.esper.client.EPAdministrator; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | 10 | import java.util.Iterator; 11 | 12 | /** 13 | * MySQLOutputRowConvertovr必须为public类,不然无法实例化。 Esper会为每一个EPL提供一个Convertor实例 14 | *

15 | * Created by Luonanqin on 2/9/14. 16 | */ 17 | public class SQLOutputRowConversionTest { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | Configuration config = new Configuration(); 21 | config.configure("esper.examples.cfg.xml"); 22 | config.addVariable("vari", Integer.class, 1); 23 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 24 | 25 | EPAdministrator admin = epService.getEPAdministrator(); 26 | // epl中返回的流必须用“*”表示,不能是之前那样写成id或者name 27 | // id=1, name="luonq" 28 | String epl1 = "@Hook(type=HookType.SQLROW, hook='" + MySQLOutputRowConvertor.class.getName() 29 | + "')select * from sql:test['select id, name from test1 where id=${vari}']"; 30 | System.out.println(epl1); 31 | EPStatement state1 = admin.createEPL(epl1); 32 | 33 | Iterator iter = state1.iterator(); 34 | while (iter.hasNext()) { 35 | EventBean eventBean = iter.next(); 36 | System.out.println(eventBean.getUnderlying()); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SelectContainedEventTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | import example.model.contained.Book; 11 | import example.model.contained.Books; 12 | import example.model.contained.Item; 13 | import example.model.contained.Items; 14 | import example.model.contained.MediaOrder; 15 | import example.model.contained.Review; 16 | 17 | import java.util.ArrayList; 18 | import java.util.List; 19 | 20 | /** 21 | * Created by Luonanqin on 5/3/14. 22 | */ 23 | class SelectContainedListener implements UpdateListener { 24 | 25 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 26 | if (newEvents != null) { 27 | for (int i = 0; i < newEvents.length; i++) { 28 | if (newEvents[i] == null) { 29 | continue; 30 | } 31 | System.out.println(newEvents[i].getUnderlying()); 32 | } 33 | } 34 | } 35 | } 36 | 37 | public class SelectContainedEventTest { 38 | 39 | public static void main(String[] args) { 40 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 41 | EPAdministrator admin = epService.getEPAdministrator(); 42 | EPRuntime runtime = epService.getEPRuntime(); 43 | 44 | Review r1 = new Review(); 45 | r1.setReviewId(1); 46 | r1.setComment("r1"); 47 | 48 | Book b1 = new Book(); 49 | b1.setAuthor("b1"); 50 | b1.setBookId(1); 51 | b1.setReview(r1); 52 | 53 | Book b2 = new Book(); 54 | b2.setAuthor("b2"); 55 | b2.setBookId(2); 56 | b2.setReview(new Review()); 57 | 58 | Item i1 = new Item(); 59 | i1.setItemId(1); 60 | i1.setProductId(1); 61 | i1.setPrice(1.11); 62 | i1.setAmount(2); 63 | 64 | MediaOrder mo1 = new MediaOrder(); 65 | Books bs = new Books(); 66 | Items is = new Items(); 67 | List items = new ArrayList(); 68 | List books = new ArrayList(); 69 | items.add(i1); 70 | books.add(b1); 71 | books.add(b2); 72 | mo1.setOrderId(1); 73 | bs.setBook(books); 74 | is.setItem(items); 75 | mo1.setItems(is); 76 | mo1.setBooks(bs); 77 | 78 | String mediaOrder = MediaOrder.class.getName(); 79 | String epl1 = "select * from " + mediaOrder + "[books.book]"; 80 | EPStatement stat1 = admin.createEPL(epl1); 81 | stat1.addListener(new SelectContainedListener()); 82 | 83 | System.out.println("EPL1: " + epl1); 84 | runtime.sendEvent(mo1); 85 | stat1.destroy(); 86 | System.out.println(); 87 | 88 | String epl2 = "select * from " + mediaOrder + "[books.book][review]"; 89 | EPStatement stat2 = admin.createEPL(epl2); 90 | stat2.addListener(new SelectContainedListener()); 91 | 92 | System.out.println("EPL2: " + epl2); 93 | runtime.sendEvent(mo1); 94 | stat2.destroy(); 95 | System.out.println(); 96 | 97 | // valid: it's return bookId and orderId 98 | // String epl3 = "select * from " + mediaOrder + "[select bookId, orderId from books.book]"; 99 | 100 | String epl3 = "select * from " + mediaOrder + "[select bookId, orderId from books.book][select * from review]"; 101 | EPStatement stat3 = admin.createEPL(epl3); 102 | stat3.addListener(new SelectContainedListener()); 103 | 104 | System.out.println("EPL3: " + epl3); 105 | runtime.sendEvent(mo1); 106 | stat3.destroy(); 107 | System.out.println(); 108 | 109 | String epl4 = "select * from " + mediaOrder + "[books.book][select bookId, orderId, reviewId from review]"; 110 | 111 | // not valid: reviewId is not from book, and it's from review 112 | // String epl4 = "select * from " + mediaOrder + "[select bookId, orderId, reviewId from books.book][review]"; 113 | 114 | // not valid: orderId is not in select clause of Contained-Event Selection 115 | // String epl4 = "select orderId from " + mediaOrder + "[select bookId from books.book][review]"; 116 | EPStatement stat4 = admin.createEPL(epl4); 117 | stat4.addListener(new SelectContainedListener()); 118 | 119 | System.out.println("EPL4: " + epl4); 120 | runtime.sendEvent(mo1); 121 | stat4.destroy(); 122 | System.out.println(); 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SelectNamedWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import com.espertech.esper.client.EventBean; 9 | import com.espertech.esper.client.UpdateListener; 10 | 11 | /** 12 | * Created by Luonanqin on 3/19/14. 13 | */ 14 | class SelectWindowEvent { 15 | 16 | private int price; 17 | private String name; 18 | 19 | public int getPrice() { 20 | return price; 21 | } 22 | 23 | public void setPrice(int price) { 24 | this.price = price; 25 | } 26 | 27 | public String getName() { 28 | return name; 29 | } 30 | 31 | public void setName(String name) { 32 | this.name = name; 33 | } 34 | 35 | @Override 36 | public String toString() { 37 | return "name=" + name + ", price=" + price; 38 | } 39 | } 40 | 41 | class SelectNamedWindowListener implements UpdateListener { 42 | 43 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 44 | if (newEvents != null) { 45 | System.out.println("There is " + newEvents.length + " events to be return!"); 46 | for (int i = 0; i < newEvents.length; i++) { 47 | System.out.println(newEvents[i].getUnderlying()); 48 | } 49 | } 50 | } 51 | } 52 | 53 | public class SelectNamedWindowTest { 54 | 55 | public static void main(String[] args) { 56 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 57 | EPAdministrator admin = epService.getEPAdministrator(); 58 | EPRuntime runtime = epService.getEPRuntime(); 59 | 60 | String selectEvent = SelectWindowEvent.class.getName(); 61 | 62 | String epl1 = "create window SelectNamedWindow.win:length_batch(3) as " + selectEvent; 63 | admin.createEPL(epl1); 64 | System.out.println("Create named window: create window SelectNamedWindow.win:length_batch(3) as " + selectEvent); 65 | String epl2 = "insert into SelectNamedWindow select * from " + selectEvent; 66 | admin.createEPL(epl2); 67 | 68 | SelectWindowEvent se1 = new SelectWindowEvent(); 69 | se1.setName("se1"); 70 | se1.setPrice(1); 71 | System.out.println("Send SelecEvent1 " + se1); 72 | runtime.sendEvent(se1); 73 | 74 | SelectWindowEvent se2 = new SelectWindowEvent(); 75 | se2.setName("se2"); 76 | se2.setPrice(2); 77 | System.out.println("Send SelecEvent2 " + se2); 78 | runtime.sendEvent(se2); 79 | 80 | // Can't create "select * from SelectamedWindow.win:time(3 sec)" 81 | String epl3 = "select * from SelectNamedWindow(price>=2)"; 82 | EPStatement state3 = admin.createEPL(epl3); 83 | state3.addListener(new SelectNamedWindowListener()); 84 | System.out.println("Register select sentence: select * from SelectNamedWindow(price>=2)"); 85 | 86 | SelectWindowEvent se3 = new SelectWindowEvent(); 87 | se3.setName("se3"); 88 | se3.setPrice(3); 89 | System.out.println("Send SelecEvent3 " + se3 + "\n"); 90 | runtime.sendEvent(se3); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SelectWindowEventTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.User; 9 | 10 | /** 11 | * 查看当前view中存在哪些事件 12 | * 为状态恢复做准备,即将某一时刻的状态记录下来,这里记录的是view中的残留事件 13 | * 14 | * 注:如果view为length_batch或者XXX_batch等,则prevwindow函数只有在每一次batch满足时才会触发 15 | * 所以针对这类view的状态复制,只有在最新一次的batch满足时才停止事件的输入,然后通过prevwinodw获取到当前最新的事件缓存 16 | * 若没有满足,则不停止事件输入 17 | * 18 | * @author luonq(luonq@primeton.com) 19 | * 20 | */ 21 | public class SelectWindowEventTest { 22 | 23 | /** 24 | * @param args 25 | */ 26 | public static void main(String[] args) { 27 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 28 | 29 | EPAdministrator admin = epService.getEPAdministrator(); 30 | 31 | String viewEpl = "select prevwindow(user) from " + User.class.getName() + ".win:length(2) as user"; 32 | 33 | EPStatement state1 = admin.createEPL(viewEpl); 34 | state1.addListener(new ViewListener()); 35 | 36 | EPRuntime runtime = epService.getEPRuntime(); 37 | 38 | User user1 = new User(); 39 | user1.setId(1); 40 | System.out.println("sendEvent: " + user1); 41 | runtime.sendEvent(user1); 42 | 43 | User user2 = new User(); 44 | user2.setId(3); 45 | System.out.println("sendEvent: " + user2); 46 | runtime.sendEvent(user2); 47 | 48 | User user3 = new User(); 49 | user3.setId(5); 50 | System.out.println("sendEvent: " + user3); 51 | runtime.sendEvent(user3); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SelectWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPOnDemandQueryResult; 5 | import com.espertech.esper.client.EPRuntime; 6 | import com.espertech.esper.client.EPServiceProvider; 7 | import com.espertech.esper.client.EPServiceProviderManager; 8 | import com.espertech.esper.client.EventBean; 9 | 10 | import java.io.Serializable; 11 | 12 | /** 13 | * Created by Luonanqin on 4/9/14. 14 | */ 15 | class SelectEvent implements Serializable { 16 | private String name; 17 | private int size; 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public int getSize() { 28 | return size; 29 | } 30 | 31 | public void setSize(int size) { 32 | this.size = size; 33 | } 34 | 35 | public String toString() { 36 | return "name=" + name + ", size=" + size; 37 | } 38 | } 39 | 40 | public class SelectWindowTest { 41 | public static void main(String[] args) { 42 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 43 | EPAdministrator admin = epService.getEPAdministrator(); 44 | EPRuntime runtime = epService.getEPRuntime(); 45 | 46 | String selectEvent = SelectEvent.class.getName(); 47 | 48 | String epl1 = "create window SelectWindow.win:keepall() as select * from " + selectEvent; 49 | String epl2 = "insert into SelectWindow select * from " + selectEvent; 50 | 51 | admin.createEPL(epl1); 52 | admin.createEPL(epl2); 53 | 54 | SelectEvent se1 = new SelectEvent(); 55 | se1.setName("se1"); 56 | se1.setSize(1); 57 | runtime.sendEvent(se1); 58 | System.out.println("Send SelectEvent 1: " + se1); 59 | 60 | SelectEvent se2 = new SelectEvent(); 61 | se2.setName("se2"); 62 | se2.setSize(2); 63 | runtime.sendEvent(se2); 64 | System.out.println("Send SelectEvent 2: " + se2); 65 | 66 | String select = "select * from SelectWindow"; 67 | String update = "update SelectWindow set name='update1' where size = 2"; 68 | String delete = "delete from SelectWindow where size < 2"; 69 | 70 | System.out.println("\nSelect SelectWindow!"); 71 | EPOnDemandQueryResult selectResult = epService.getEPRuntime().executeQuery(select); 72 | EventBean[] events = selectResult.getArray(); 73 | for (int i = 0; i < events.length; i++) { 74 | System.out.println(events[i].getUnderlying()); 75 | } 76 | 77 | // 更新size=2的事件,将name改为'update1' 78 | System.out.println("\nUpdate SelectEvent(size = 2) in SelectWindow!"); 79 | EPOnDemandQueryResult updateResult = epService.getEPRuntime().executeQuery(update); 80 | events = updateResult.getArray(); 81 | for (int i = 0; i < events.length; i++) { 82 | System.out.println(events[i].getUnderlying()); 83 | } 84 | 85 | System.out.println("\nSelect SelectWindow!"); 86 | selectResult = epService.getEPRuntime().executeQuery(select); 87 | events = selectResult.getArray(); 88 | for (int i = 0; i < events.length; i++) { 89 | System.out.println(events[i].getUnderlying()); 90 | } 91 | 92 | // 删除size<2的事件 93 | System.out.println("\nDelete SelectEvent(size < 2) in SelectWindow!"); 94 | EPOnDemandQueryResult deleteResult = epService.getEPRuntime().executeQuery(delete); 95 | events = deleteResult.getArray(); 96 | for (int i = 0; i < events.length; i++) { 97 | System.out.println(events[i].getUnderlying()); 98 | } 99 | 100 | System.out.println("\nSelect SelectWindow!"); 101 | selectResult = epService.getEPRuntime().executeQuery(select); 102 | events = selectResult.getArray(); 103 | for (int i = 0; i < events.length; i++) { 104 | System.out.println(events[i].getUnderlying()); 105 | } 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SplitDuplicateTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPOnDemandQueryResult; 5 | import com.espertech.esper.client.EPRuntime; 6 | import com.espertech.esper.client.EPServiceProvider; 7 | import com.espertech.esper.client.EPServiceProviderManager; 8 | import com.espertech.esper.client.EventBean; 9 | 10 | import java.io.Serializable; 11 | 12 | /** 13 | * Created by Luonanqin on 4/26/14. 14 | */ 15 | class SplitEvent implements Serializable { 16 | 17 | private int size; 18 | private int price; 19 | 20 | public SplitEvent(int price, int size) { 21 | this.price = price; 22 | this.size = size; 23 | } 24 | 25 | public int getPrice() { 26 | return price; 27 | } 28 | 29 | public void setPrice(int price) { 30 | this.price = price; 31 | } 32 | 33 | public int getSize() { 34 | return size; 35 | } 36 | 37 | public void setSize(int size) { 38 | this.size = size; 39 | } 40 | 41 | public String toString() { 42 | return "SplitEvent{" + "size=" + size + ", price=" + price + '}'; 43 | } 44 | } 45 | 46 | public class SplitDuplicateTest { 47 | 48 | public static void main(String[] args) { 49 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 50 | EPAdministrator admin = epService.getEPAdministrator(); 51 | EPRuntime runtime = epService.getEPRuntime(); 52 | 53 | String splitEvent = SplitEvent.class.getName(); 54 | 55 | String epl1 = "create window LargeOrder.win:keepall() (price int) "; 56 | String epl2 = "create window MediumOrder.win:keepall() (price int)"; 57 | String epl3 = "create window SmallOrder.win:keepall() (price int)"; 58 | String epl4 = "create window LargeSize.win:keepall() (size int)"; 59 | String epl5 = "create window MediumSize.win:keepall() (size int)"; 60 | String epl6 = "create window SmallSize.win:keepall() (size int)"; 61 | 62 | // output first 63 | String insert1 = "insert into LargeOrder select price where price > 8"; 64 | String insert2 = "insert into MediumOrder select price where price between 3 and 10"; 65 | String insert3 = "insert into SmallOrder select price where price <= 3"; 66 | String epl7 = "on " + splitEvent + " " + insert1 + " " + insert2 + " " + insert3; 67 | 68 | // output all 69 | String insert4 = "insert into LargeSize select size where size > 5"; 70 | String insert5 = "insert into MediumSize select size where size between 2 and 8"; 71 | String insert6 = "insert into SmallSize select size where size <= 2"; 72 | String epl8 = "on " + splitEvent + " " + insert4 + " " + insert5 + " " + insert6 + " output all"; 73 | 74 | System.out.println("Output first(default): "); 75 | System.out.println(insert1); 76 | System.out.println(insert2); 77 | System.out.println(insert3); 78 | 79 | System.out.println(); 80 | 81 | System.out.println("Output all: "); 82 | System.out.println(insert4); 83 | System.out.println(insert5); 84 | System.out.println(insert6); 85 | 86 | String selectLargeOrder = "select * from LargeOrder"; 87 | String selectMediumOrder = "select * from MediumOrder"; 88 | String selectSmallOrder = "select * from SmallOrder"; 89 | 90 | String selectLargeSize = "select * from LargeSize"; 91 | String selectMediumSize = "select * from MediumSize"; 92 | String selectSmallSize = "select * from SmallSize"; 93 | 94 | System.out.println(); 95 | 96 | admin.createEPL(epl1); 97 | admin.createEPL(epl2); 98 | admin.createEPL(epl3); 99 | admin.createEPL(epl4); 100 | admin.createEPL(epl5); 101 | admin.createEPL(epl6); 102 | 103 | admin.createEPL(epl7); 104 | admin.createEPL(epl8); 105 | 106 | SplitEvent se1 = new SplitEvent(1, 2); 107 | SplitEvent se2 = new SplitEvent(9, 4); 108 | SplitEvent se3 = new SplitEvent(3, 1); 109 | SplitEvent se4 = new SplitEvent(5, 6); 110 | SplitEvent se5 = new SplitEvent(7, 9); 111 | 112 | System.out.println(se4); 113 | runtime.sendEvent(se1); 114 | System.out.println(se1); 115 | runtime.sendEvent(se2); 116 | System.out.println(se2); 117 | runtime.sendEvent(se3); 118 | System.out.println(se3); 119 | runtime.sendEvent(se4); 120 | runtime.sendEvent(se5); 121 | System.out.println(se5); 122 | 123 | EPOnDemandQueryResult selectLOrder = runtime.executeQuery(selectLargeOrder); 124 | EPOnDemandQueryResult selectMOrder = runtime.executeQuery(selectMediumOrder); 125 | EPOnDemandQueryResult selectSOrder = runtime.executeQuery(selectSmallOrder); 126 | EPOnDemandQueryResult selectLSize = runtime.executeQuery(selectLargeSize); 127 | EPOnDemandQueryResult selectMSize = runtime.executeQuery(selectMediumSize); 128 | EPOnDemandQueryResult selectSSize = runtime.executeQuery(selectSmallSize); 129 | 130 | outputResult(selectLargeOrder, selectLOrder); 131 | outputResult(selectMediumOrder, selectMOrder); 132 | outputResult(selectSmallOrder, selectSOrder); 133 | outputResult(selectLargeSize, selectLSize); 134 | outputResult(selectMediumSize, selectMSize); 135 | outputResult(selectSmallSize, selectSSize); 136 | } 137 | 138 | private static void outputResult(String selectSentence, EPOnDemandQueryResult result) { 139 | System.out.println("\n" + selectSentence); 140 | EventBean[] events = result.getArray(); 141 | for (int i = 0; i < events.length; i++) { 142 | EventBean event = events[i]; 143 | System.out.println(event.getUnderlying()); 144 | } 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/StandardGroupWinListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class StandardGroupWinListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) { 10 | EventBean event = newEvents[0]; 11 | System.out.println("type: " + event.get("type") + ", sum(price): " + event.get("sum(price)")); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/StandardGroupWinTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Product; 9 | 10 | /** 11 | * std:groupwin根据type进行分组,并且每一组的事件长度达到2时输出结果,group by是用于分组展示结果。 12 | * 如果没有group by,则sum计算的是所有事件的price,而不是每一个view单独计算price,groupwin只是为不同的 13 | * type提供一个length_batch 14 | * 15 | * @author luonanqin 16 | * 17 | */ 18 | public class StandardGroupWinTest { 19 | 20 | public static void main(String[] args) throws InterruptedException { 21 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 22 | 23 | EPAdministrator admin = epService.getEPAdministrator(); 24 | 25 | String product = Product.class.getName(); 26 | String epl2 = "select sum(price), type from " + product + ".std:groupwin(type).win:length_batch(2) group by type"; 27 | 28 | EPStatement state = admin.createEPL(epl2); 29 | state.addListener(new StandardGroupWinListener()); 30 | 31 | EPRuntime runtime = epService.getEPRuntime(); 32 | 33 | Product esb = new Product(); 34 | esb.setPrice(1); 35 | esb.setType("esb"); 36 | System.out.println("sendEvent: " + esb); 37 | runtime.sendEvent(esb); 38 | 39 | Product eos = new Product(); 40 | eos.setPrice(2); 41 | eos.setType("eos"); 42 | System.out.println("sendEvent: " + eos); 43 | runtime.sendEvent(eos); 44 | 45 | Product esb1 = new Product(); 46 | esb1.setPrice(2); 47 | esb1.setType("esb"); 48 | System.out.println("sendEvent: " + esb1); 49 | runtime.sendEvent(esb1); 50 | 51 | Product eos1 = new Product(); 52 | eos1.setPrice(5); 53 | eos1.setType("eos"); 54 | System.out.println("sendEvent: " + eos1); 55 | runtime.sendEvent(eos1); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/StatementStartedOrStoppedTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPServiceProvider; 5 | import com.espertech.esper.client.EPServiceProviderManager; 6 | import com.espertech.esper.client.EPStatement; 7 | import example.model.User; 8 | 9 | /** 10 | * 查看EPL的运行状态 11 | * 12 | * @author luonq(luonq@primeton.com) 13 | * 14 | */ 15 | public class StatementStartedOrStoppedTest { 16 | 17 | public static void main(String[] args) { 18 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 19 | 20 | EPAdministrator admin = epService.getEPAdministrator(); 21 | 22 | String epl1 = "select id from " + User.class.getName(); 23 | String epl2 = epl1 + ".win:time(10 sec)"; 24 | 25 | admin.createEPL(epl1); 26 | admin.createEPL(epl2); 27 | 28 | String[] stateNames = admin.getStatementNames(); 29 | for (String name : stateNames) { 30 | EPStatement state = admin.getStatement(name); 31 | System.out.println("EPL: " + state.getText() + " State: " + state.getState()); 32 | } 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SubqueryAggregationTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPServiceProvider; 5 | import com.espertech.esper.client.EPServiceProviderManager; 6 | 7 | /** 8 | * The properties of the subselect stream must all be within aggregation functions. 9 | * 10 | * 子查询语句如果使用了聚合函数,则select子句中的属性都要使用聚合函数,但可以使用不同的聚合函数 11 | * 12 | * @author luonanqin 13 | * 14 | */ 15 | class Apple { 16 | private int price; 17 | private int size; 18 | 19 | public void setPrice(int price) { 20 | this.price = price; 21 | } 22 | 23 | public void setSize(int size) { 24 | this.size = size; 25 | } 26 | 27 | public int getPrice() { 28 | return price; 29 | } 30 | 31 | public int getSize() { 32 | return size; 33 | } 34 | } 35 | 36 | class Fruit { 37 | 38 | } 39 | 40 | public class SubqueryAggregationTest { 41 | 42 | public static void main(String[] args) throws InterruptedException { 43 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 44 | 45 | EPAdministrator admin = epService.getEPAdministrator(); 46 | 47 | String epl1 = "select (select sum(price), sum(size) from " + Apple.class.getName() + ".std:lastevent()) from " + Fruit.class.getName(); 48 | /* 49 | * 当然,对不同的属性使用不同的聚合函数也是可以的 50 | */ 51 | // String epl1 = "select (select sum(price), avg(size) from " + Apple.class.getName() + ".std:lastevent()) from " + Fruit.class.getName(); 52 | 53 | /* 54 | * 注意:size没有使用聚合函数,会导致创建epl失败。文档中注明了“The properties of the subselect stream must all be within aggregation functions”. 55 | * 即子查询中的select子句使用聚合函数时,所查询的属性都要使用聚合函数 56 | */ 57 | // String epl1 = "select (select sum(price), size from " + Apple.class.getName() + ".std:lastevent()) from " + Fruit.class.getName(); 58 | 59 | admin.createEPL(epl1); 60 | System.out.println("Create epl successfully!"); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/SubqueryExistsTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPServiceProvider; 5 | import com.espertech.esper.client.EPServiceProviderManager; 6 | 7 | /** 8 | * subquer的exists用法 9 | * 10 | * 注:subquery不可返回多列结果 11 | * 12 | * @author luonanqin 13 | * 14 | */ 15 | class Apple1 { 16 | private int price; 17 | private int size; 18 | 19 | public void setPrice(int price) { 20 | this.price = price; 21 | } 22 | 23 | public void setSize(int size) { 24 | this.size = size; 25 | } 26 | 27 | public int getPrice() { 28 | return price; 29 | } 30 | 31 | public int getSize() { 32 | return size; 33 | } 34 | } 35 | 36 | class Fruit1 { 37 | } 38 | 39 | public class SubqueryExistsTest { 40 | 41 | public static void main(String[] args) throws InterruptedException { 42 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 43 | 44 | EPAdministrator admin = epService.getEPAdministrator(); 45 | 46 | String epl1 = "select * from " + Fruit1.class.getName() + " where exists (select price from " + Apple1.class.getName() 47 | + ".std:lastevent() group by price)"; 48 | /* 49 | * 同样可以适用于Filter 50 | */ 51 | // String epl1 = "select * from " + Fruit.class.getName() + "(exists (select sum(size) from " + Apple.class.getName() + ".std:lastevent()))"; 52 | 53 | /* 54 | * 注意:不能返回多列结果,只能返回单列 55 | */ 56 | // String epl1 = "select * from " + Fruit.class.getName() + " where exists (select price, size from " + Apple.class.getName() + ".std:lastevent())"; 57 | 58 | admin.createEPL(epl1); 59 | System.out.println("Create epl successfully!"); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/TimeBatchListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class TimeBatchListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | System.out.println("avgTime: " + newEvents[0].get("at") + " currentTime" + newEvents[0].get("ct")); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/TimeBatchTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Timer; 9 | 10 | /** 11 | * 外部时间批处理测试 12 | * 设置当前时间为初始时间,每两秒为一个时间窗口,计算Timer类的平均time 13 | * 14 | * @author luonq(luonq@primeton.com) 15 | * 16 | */ 17 | public class TimeBatchTest { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 21 | 22 | EPAdministrator admin = epService.getEPAdministrator(); 23 | 24 | String epl1 = "select avg(time) as at, current_timestamp as ct from " + Timer.class.getName() + ".win:ext_timed_batch(current_timestamp(), 2 sec)"; 25 | 26 | EPStatement state = admin.createEPL(epl1); 27 | state.addListener(new TimeBatchListener()); 28 | System.out.println("InitialTime:" + System.currentTimeMillis()); 29 | 30 | EPRuntime runtime = epService.getEPRuntime(); 31 | 32 | Timer t1 = new Timer(); 33 | t1.setId(1); 34 | t1.setTime(15); 35 | runtime.sendEvent(t1); 36 | 37 | Timer t2 = new Timer(); 38 | t2.setId(2); 39 | t2.setTime(35); 40 | runtime.sendEvent(t2); 41 | 42 | Thread.sleep(2000); 43 | 44 | Timer t3 = new Timer(); 45 | t3.setId(3); 46 | t3.setTime(30); 47 | runtime.sendEvent(t3); 48 | 49 | Timer t4 = new Timer(); 50 | t4.setId(4); 51 | t4.setTime(20); 52 | runtime.sendEvent(t4); 53 | 54 | Thread.sleep(2000); 55 | 56 | Timer t5 = new Timer(); 57 | t5.setId(5); 58 | t5.setTime(20); 59 | runtime.sendEvent(t5); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/TimeOldEventsListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class TimeOldEventsListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (oldEvents != null) 10 | System.out.println("oldEvents count: " + oldEvents.length); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/TimeOldEventsTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | import example.model.Timer; 9 | 10 | /** 11 | * 测试时间窗口的时间到达时输出view中的事件,即oldEvents 12 | * 只有使用irstream才可以达到此效果,istream显然不会输出oldEvents,但是rstream也不可行 13 | * 14 | * @author luonanqin 15 | * 16 | */ 17 | public class TimeOldEventsTest { 18 | 19 | public static void main(String[] args) throws InterruptedException { 20 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 21 | 22 | EPAdministrator admin = epService.getEPAdministrator(); 23 | 24 | String timer = Timer.class.getName(); 25 | String epl1 = "select irstream * from " + timer + ".win:time(3 sec)"; 26 | 27 | EPStatement state = admin.createEPL(epl1); 28 | System.out.println(state.getText()); 29 | state.addListener(new TimeOldEventsListener()); 30 | 31 | EPRuntime runtime = epService.getEPRuntime(); 32 | 33 | Timer t1 = new Timer(); 34 | t1.setId(1); 35 | t1.setTime(15); 36 | System.out.println("send Event: t1"); 37 | runtime.sendEvent(t1); 38 | 39 | Timer t2 = new Timer(); 40 | t2.setId(2); 41 | t2.setTime(35); 42 | System.out.println("send Event: t2"); 43 | runtime.sendEvent(t2); 44 | 45 | System.out.println("event input after 3 sec"); 46 | Thread.sleep(1000); 47 | System.out.println("===== 1 sec"); 48 | Thread.sleep(1000); 49 | System.out.println("===== 2 sec"); 50 | Thread.sleep(1000); 51 | System.out.println("===== 3 sec"); 52 | 53 | Timer t3 = new Timer(); 54 | t3.setId(3); 55 | t3.setTime(30); 56 | System.out.println("send Event: t3"); 57 | runtime.sendEvent(t3); 58 | 59 | Timer t4 = new Timer(); 60 | t4.setId(4); 61 | t4.setTime(20); 62 | System.out.println("send Event: t4"); 63 | runtime.sendEvent(t4); 64 | 65 | Timer t5 = new Timer(); 66 | t5.setId(5); 67 | t5.setTime(20); 68 | System.out.println("send Event: t5"); 69 | runtime.sendEvent(t5); 70 | 71 | Timer t6 = new Timer(); 72 | t6.setId(6); 73 | t6.setTime(25); 74 | System.out.println("send Event: t6"); 75 | runtime.sendEvent(t6); 76 | 77 | System.out.println("event input after 3 sec"); 78 | Thread.sleep(1000); 79 | System.out.println("===== 1 sec"); 80 | Thread.sleep(1000); 81 | System.out.println("===== 2 sec"); 82 | Thread.sleep(1000); 83 | System.out.println("===== 3 sec"); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/UpdateEventTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.io.Serializable; 4 | 5 | import com.espertech.esper.client.Configuration; 6 | import com.espertech.esper.client.EPAdministrator; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EPStatement; 11 | import com.espertech.esper.client.EventBean; 12 | import com.espertech.esper.client.UpdateListener; 13 | 14 | /** 15 | * Created by Luonanqin on 7/31/14. 16 | */ 17 | class UpdateEvent implements Serializable { 18 | 19 | private int id; 20 | private String name; 21 | 22 | public int getId() { 23 | return id; 24 | } 25 | 26 | public void setId(int id) { 27 | this.id = id; 28 | } 29 | 30 | public String getName() { 31 | return name; 32 | } 33 | 34 | public void setName(String name) { 35 | this.name = name; 36 | } 37 | 38 | public String toString() { 39 | return "UpdateEvent{" + "id=" + id + ", name='" + name + '\'' + '}'; 40 | } 41 | } 42 | 43 | class UpdateEventListener implements UpdateListener { 44 | 45 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 46 | if (newEvents != null) { 47 | for (int i = 0; i < newEvents.length; i++) { 48 | System.out.println("newEvent: " + newEvents[i].getUnderlying()); 49 | } 50 | } 51 | if (oldEvents != null) { 52 | for (int i = 0; i < oldEvents.length; i++) { 53 | System.out.println("oldEvent: " + oldEvents[i].getUnderlying()); 54 | } 55 | } 56 | } 57 | } 58 | 59 | public class UpdateEventTest { 60 | 61 | public static void main(String[] args) { 62 | /** 63 | * config: 64 | * 65 | * 66 | * 67 | * 68 | * 69 | * 70 | */ 71 | Configuration config = new Configuration(); 72 | config.configure("esper.examples.cfg.xml"); 73 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(config); 74 | EPAdministrator admin = epService.getEPAdministrator(); 75 | EPRuntime runtime = epService.getEPRuntime(); 76 | UpdateEventListener listener = new UpdateEventListener(); 77 | 78 | UpdateEvent ue = new UpdateEvent(); 79 | ue.setId(1); 80 | ue.setName("luonanqin"); 81 | 82 | UpdateEvent ue2 = new UpdateEvent(); 83 | ue2.setId(2); 84 | ue2.setName("qinnanluo"); 85 | 86 | String updateEvent = UpdateEvent.class.getName(); 87 | String select = "select * from " + updateEvent; 88 | String update1 = "@Priority(2)update istream " + updateEvent + " set name='qnoul' where id = 1"; 89 | String update2 = "@Priority(1)update istream " + updateEvent + " set name='luonq' where id = 1"; 90 | 91 | EPStatement stat1 = admin.createEPL(select); 92 | stat1.addListener(listener); 93 | System.out.println("select EPL: " + select); 94 | 95 | runtime.sendEvent(ue); 96 | runtime.sendEvent(ue2); 97 | System.out.println(); 98 | 99 | EPStatement stat2 = admin.createEPL(update1); 100 | stat2.addListener(listener); 101 | System.out.println("update1 EPL: " + update1); 102 | 103 | runtime.sendEvent(ue); 104 | runtime.sendEvent(ue2); 105 | System.out.println(); 106 | 107 | EPStatement stat3 = admin.createEPL(update2); 108 | stat3.addListener(listener); 109 | System.out.println("update2 EPL: " + update2); 110 | 111 | runtime.sendEvent(ue); 112 | runtime.sendEvent(ue2); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/UpdateWindowTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import java.io.Serializable; 4 | 5 | import com.espertech.esper.client.EPAdministrator; 6 | import com.espertech.esper.client.EPOnDemandQueryResult; 7 | import com.espertech.esper.client.EPRuntime; 8 | import com.espertech.esper.client.EPServiceProvider; 9 | import com.espertech.esper.client.EPServiceProviderManager; 10 | import com.espertech.esper.client.EventBean; 11 | 12 | /** 13 | * Created by Luonanqin on 4/8/14. 14 | */ 15 | class UpdateWindow implements Serializable{ 16 | private String name; 17 | private int size; 18 | 19 | public String getName() { 20 | return name; 21 | } 22 | 23 | public void setName(String name) { 24 | this.name = name; 25 | } 26 | 27 | public int getSize() { 28 | return size; 29 | } 30 | 31 | public void setSize(int size) { 32 | this.size = size; 33 | } 34 | 35 | public String toString() { 36 | return "name=" + name + ", size=" + size; 37 | } 38 | } 39 | 40 | public class UpdateWindowTest { 41 | public static void main(String[] args) { 42 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 43 | EPAdministrator admin = epService.getEPAdministrator(); 44 | EPRuntime runtime = epService.getEPRuntime(); 45 | 46 | String updateEvent = UpdateWindow.class.getName(); 47 | 48 | String epl1 = "create window UpdateWindow.win:keepall() as select * from " + updateEvent; 49 | String epl2 = "insert into UpdateWindow select * from " + updateEvent; 50 | 51 | admin.createEPL(epl1); 52 | admin.createEPL(epl2); 53 | 54 | UpdateWindow ue1 = new UpdateWindow(); 55 | ue1.setName("ue1"); 56 | ue1.setSize(1); 57 | runtime.sendEvent(ue1); 58 | System.out.println("Send UpdateEvent 1: " + ue1); 59 | 60 | UpdateWindow ue2 = new UpdateWindow(); 61 | ue2.setName("ue2"); 62 | ue2.setSize(2); 63 | runtime.sendEvent(ue2); 64 | System.out.println("Send UpdateEvent 2: " + ue2); 65 | 66 | String select = "select * from UpdateWindow"; 67 | String delete = "update UpdateWindow set name='update1' where size = 2"; 68 | 69 | System.out.println("\nSelect UpdateWindow!"); 70 | EPOnDemandQueryResult result1 = epService.getEPRuntime().executeQuery(select); 71 | EventBean[] events = result1.getArray(); 72 | for (int i = 0; i < events.length; i++) { 73 | System.out.println(events[i].getUnderlying()); 74 | } 75 | 76 | System.out.println("\nUpdate UpdateEvent(size = 2) in UpdateWindow!"); 77 | EPOnDemandQueryResult result2 = epService.getEPRuntime().executeQuery(delete); 78 | events = result2.getArray(); 79 | for (int i = 0; i < events.length; i++) { 80 | System.out.println(events[i].getUnderlying()); 81 | } 82 | 83 | System.out.println("\nSelect UpdateWindow!"); 84 | result1 = epService.getEPRuntime().executeQuery(select); 85 | events = result1.getArray(); 86 | for (int i = 0; i < events.length; i++) { 87 | System.out.println(events[i].getUnderlying()); 88 | } 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/VariableTest.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.ConfigurationOperations; 4 | import com.espertech.esper.client.EPAdministrator; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | 8 | import example.model.ESB; 9 | import example.model.Product; 10 | 11 | /** 12 | * ConfigurationOperations可设置变量值或者常量值,然后通过EPRuntime提供的接口查询当前值 13 | * 14 | * @author luonanqin 15 | * 16 | */ 17 | public class VariableTest { 18 | 19 | /** 20 | * @param args 21 | */ 22 | public static void main(String[] args) { 23 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 24 | 25 | EPAdministrator admin = epService.getEPAdministrator(); 26 | 27 | String esb = ESB.class.getName(); 28 | String context1 = "create context esbtest partition by id from " + esb; 29 | String epl1 = "context esbtest select avg(price) as aPrice from " + esb; 30 | 31 | admin.createEPL(context1, "context1"); 32 | admin.createEPL(epl1, "epl1"); 33 | 34 | ConfigurationOperations conf = admin.getConfiguration(); 35 | conf.addEventType("product", Product.class); 36 | conf.addVariable("abc", String.class, "initVariable"); 37 | conf.addVariable("constabc", int.class.getName(), 123, true); 38 | 39 | Object variableValue = epService.getEPRuntime().getVariableValue("abc"); 40 | Object constValue = epService.getEPRuntime().getVariableValue("constabc"); 41 | System.out.println("variable value: " + variableValue); 42 | System.out.println("const value: " + constValue); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/ViewListener.java: -------------------------------------------------------------------------------- 1 | package example; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | import example.model.User; 6 | 7 | 8 | public class ViewListener implements UpdateListener { 9 | 10 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 11 | if (newEvents != null) { 12 | Object users = newEvents[0].get("prevwindow(user)"); 13 | for (User u : (User[]) users) { 14 | System.out.print(u + " "); 15 | } 16 | System.out.println(); 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/ESB.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class ESB { 4 | 5 | private int id; 6 | private int price; 7 | 8 | public int getId() { 9 | return id; 10 | } 11 | 12 | public void setId(int id) { 13 | this.id = id; 14 | } 15 | 16 | public int getPrice() { 17 | return price; 18 | } 19 | 20 | public void setPrice(int price) { 21 | this.price = price; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/Fruit.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class Fruit { 4 | 5 | private String name; 6 | private long price; 7 | 8 | public String getName() { 9 | return name; 10 | } 11 | 12 | public void setName(String name) { 13 | this.name = name; 14 | } 15 | 16 | public long getPrice() { 17 | return price; 18 | } 19 | 20 | public void setPrice(long price) { 21 | this.price = price; 22 | } 23 | 24 | public String toString() { 25 | return "name: " + name + ", price: " + price; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/Product.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class Product { 4 | 5 | private String type; 6 | private int price; 7 | 8 | public String getType() { 9 | return type; 10 | } 11 | 12 | public void setType(String type) { 13 | this.type = type; 14 | } 15 | 16 | public int getPrice() { 17 | return price; 18 | } 19 | 20 | public void setPrice(int price) { 21 | this.price = price; 22 | } 23 | 24 | public String toString() { 25 | return "type: " + type + ", price: " + price; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/T.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class T { 4 | 5 | private long timestamp; 6 | 7 | public long getTimestamp() { 8 | return timestamp; 9 | } 10 | 11 | public void setTimestamp(long timestamp) { 12 | this.timestamp = timestamp; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/Timer.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class Timer { 4 | 5 | private long time; 6 | private int id; 7 | 8 | public long getTime() { 9 | return time; 10 | } 11 | 12 | public void setTime(long time) { 13 | this.time = time; 14 | } 15 | 16 | public int getId() { 17 | return id; 18 | } 19 | 20 | public void setId(int id) { 21 | this.id = id; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/User.java: -------------------------------------------------------------------------------- 1 | package example.model; 2 | 3 | public class User { 4 | 5 | private int id; 6 | 7 | public int getId() { 8 | return id; 9 | } 10 | 11 | public void setId(int id) { 12 | this.id = id; 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return "User: " + id; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/Book.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | /** 4 | * Created by Luonanqin on 7/26/14. 5 | */ 6 | public class Book { 7 | private int bookId; 8 | private String author; 9 | private Review review; 10 | 11 | public int getBookId() { 12 | return bookId; 13 | } 14 | 15 | public void setBookId(int bookId) { 16 | this.bookId = bookId; 17 | } 18 | 19 | public String getAuthor() { 20 | return author; 21 | } 22 | 23 | public void setAuthor(String author) { 24 | this.author = author; 25 | } 26 | 27 | public Review getReview() { 28 | return review; 29 | } 30 | 31 | public void setReview(Review review) { 32 | this.review = review; 33 | } 34 | 35 | public String toString() { 36 | return "Book{" + "bookId=" + bookId + ", author='" + author + '\'' + ", review=" + review + '}'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/Books.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Luonanqin on 7/26/14. 7 | */ 8 | public class Books { 9 | private List book; 10 | 11 | public List getBook() { 12 | return book; 13 | } 14 | 15 | public void setBook(List book) { 16 | this.book = book; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/Item.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | /** 4 | * Created by Luonanqin on 7/26/14. 5 | */ 6 | public class Item { 7 | private int itemId; 8 | private int productId; 9 | private int amount; 10 | private double price; 11 | 12 | public int getItemId() { 13 | return itemId; 14 | } 15 | 16 | public void setItemId(int itemId) { 17 | this.itemId = itemId; 18 | } 19 | 20 | public int getProductId() { 21 | return productId; 22 | } 23 | 24 | public void setProductId(int productId) { 25 | this.productId = productId; 26 | } 27 | 28 | public int getAmount() { 29 | return amount; 30 | } 31 | 32 | public void setAmount(int amount) { 33 | this.amount = amount; 34 | } 35 | 36 | public double getPrice() { 37 | return price; 38 | } 39 | 40 | public void setPrice(double price) { 41 | this.price = price; 42 | } 43 | 44 | public String toString() { 45 | return "Item{" + "itemId=" + itemId + ", productId=" + productId + ", amount=" + amount + ", price=" + price + '}'; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/Items.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Luonanqin on 7/26/14. 7 | */ 8 | public class Items { 9 | private List item; 10 | 11 | public List getItem() { 12 | return item; 13 | } 14 | 15 | public void setItem(List item) { 16 | this.item = item; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/MediaOrder.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | /** 4 | * Created by Luonanqin on 7/26/14. 5 | */ 6 | public class MediaOrder { 7 | private int orderId; 8 | private Items items; 9 | private Books books; 10 | 11 | public int getOrderId() { 12 | return orderId; 13 | } 14 | 15 | public void setOrderId(int orderId) { 16 | this.orderId = orderId; 17 | } 18 | 19 | public Items getItems() { 20 | return items; 21 | } 22 | 23 | public void setItems(Items items) { 24 | this.items = items; 25 | } 26 | 27 | public Books getBooks() { 28 | return books; 29 | } 30 | 31 | public void setBooks(Books books) { 32 | this.books = books; 33 | } 34 | 35 | public String toString() { 36 | return "MediaOrder{" + "orderId=" + orderId + ", items=" + items + ", books=" + books + '}'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/example/model/contained/Review.java: -------------------------------------------------------------------------------- 1 | package example.model.contained; 2 | 3 | /** 4 | * Created by Luonanqin on 7/26/14. 5 | */ 6 | public class Review { 7 | private int reviewId; 8 | private String comment; 9 | 10 | public int getReviewId() { 11 | return reviewId; 12 | } 13 | 14 | public void setReviewId(int reviewId) { 15 | this.reviewId = reviewId; 16 | } 17 | 18 | public String getComment() { 19 | return comment; 20 | } 21 | 22 | public void setComment(String comment) { 23 | this.comment = comment; 24 | } 25 | 26 | public String toString() { 27 | return "Review{" + "reviewId=" + reviewId + ", comment='" + comment + '\'' + '}'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/test/Test.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import com.espertech.esper.client.EPAdministrator; 4 | import com.espertech.esper.client.EPRuntime; 5 | import com.espertech.esper.client.EPServiceProvider; 6 | import com.espertech.esper.client.EPServiceProviderManager; 7 | import com.espertech.esper.client.EPStatement; 8 | 9 | import example.model.Product; 10 | 11 | /** 12 | * 13 | * @author luonanqin 14 | * 15 | */ 16 | public class Test { 17 | 18 | public static void main(String[] args) throws InterruptedException { 19 | EPServiceProvider epService = EPServiceProviderManager.getDefaultProvider(); 20 | 21 | EPAdministrator admin = epService.getEPAdministrator(); 22 | 23 | String product = Product.class.getName(); 24 | // String epl1 = "select * from " + product + ".win:time_batch(10 sec)"; 25 | String epl1 = "select sum(price) from " + product + ".win:length_batch(2)"; 26 | 27 | EPStatement state = admin.createEPL(epl1); 28 | state.addListener(new TestListener()); 29 | 30 | EPRuntime runtime = epService.getEPRuntime(); 31 | 32 | Product esb = new Product(); 33 | esb.setPrice(1); 34 | esb.setType("esb"); 35 | runtime.sendEvent(esb); 36 | 37 | Product eos = new Product(); 38 | eos.setPrice(2); 39 | eos.setType("eos"); 40 | runtime.sendEvent(eos); 41 | 42 | 43 | Product esb1 = new Product(); 44 | esb1.setPrice(2); 45 | esb1.setType("esb"); 46 | runtime.sendEvent(esb1); 47 | 48 | Product eos1 = new Product(); 49 | eos1.setPrice(5); 50 | eos1.setType("eos"); 51 | runtime.sendEvent(eos1); 52 | 53 | System.out.println(); 54 | 55 | Product esb2 = new Product(); 56 | esb2.setPrice(3); 57 | esb2.setType("esb"); 58 | runtime.sendEvent(esb2); 59 | 60 | Product eos3 = new Product(); 61 | eos3.setPrice(6); 62 | eos3.setType("eos"); 63 | runtime.sendEvent(eos3); 64 | 65 | System.out.println(); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /csdn-esper/src/main/java/test/TestListener.java: -------------------------------------------------------------------------------- 1 | package test; 2 | 3 | import com.espertech.esper.client.EventBean; 4 | import com.espertech.esper.client.UpdateListener; 5 | 6 | public class TestListener implements UpdateListener { 7 | 8 | public void update(EventBean[] newEvents, EventBean[] oldEvents) { 9 | if (newEvents != null) 10 | System.out.println(newEvents.length); 11 | } 12 | } 13 | --------------------------------------------------------------------------------