2012-10-01 30 views
3

我是Esper的新手,我想得到一些帮助。我已经设法使用CSV文件来使用Esper,但现在我需要使用Java对象作为通过套接字发送的事件,并且我无法在Internet上找到简单示例作为指导。从Esper + sockets开始

有没有人基于他们一些简单的例子?

无论如何,我在这里让我想要做的工作代码。当我运行它时,没有任何反应,它似乎套接字连接不起作用。

服务器类(它也包含事件类)。它被认为是发送事件:

import java.io.* ; 
import java.net.* ; 

class Server { 

static final int PORT=5002; 

    public Server() { 
     try { 
      ServerSocket skServer = new ServerSocket(PORT); 
      System.out.println("Listening at " + PORT); 
      Socket skClient = skServer.accept();   
      System.out.println("Serving to Esper"); 
      OutputStream aux = skClient.getOutputStream(); 
      ObjectOutputStream flux = new ObjectOutputStream(aux); 
      int i = 0; 
      while (i<10) { 
       flux.writeObject(new MeteoEvent(i,"A")); 
       i++; 
       } 
      flux.flush(); 
      skClient.close(); 
      System.out.println("End of transmission"); 
      } catch(Exception e) { 
      System.out.println(e.getMessage()); 
     } 
    } 

    public static void main(String[] arg) { 
     new Server(); 
    } 

    class MeteoEvent{ 

     private int sensorId; 
     private String GeoArea; 

     public MeteoEvent() { 
     } 

     public MeteoEvent(int sensorid, String geoarea) { 
      this.sensorId = sensorid; 
      this.GeoArea = geoarea; 
     } 

     public int getSensorId() { 
      return sensorId; 
     } 

     public void setSensorId(int sensorId) { 
      this.sensorId = sensorId; 
     } 

     public String getGeoArea() { 
      return GeoArea; 
     } 

     public void setGeoArea(String geoArea) { 
      GeoArea = geoArea; 
     } 
    } 
} 

而且基于Esper的类。

import java.io.File; 
import java.io.IOException; 
import java.sql.SQLException; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 


import com.espertech.esper.client.Configuration; 
import com.espertech.esper.client.EPAdministrator; 
import com.espertech.esper.client.EPRuntime; 
import com.espertech.esper.client.EPServiceProvider; 
import com.espertech.esper.client.EPServiceProviderManager; 
import com.espertech.esper.client.EPStatement; 
import com.espertech.esper.client.EventBean; 
import com.espertech.esper.client.UpdateListener; 
import com.espertech.esper.event.map.MapEventBean; 
import com.espertech.esperio.socket.EsperIOSocketAdapter; 
import com.espertech.esperio.socket.config.ConfigurationSocketAdapter; 
import com.espertech.esperio.socket.config.DataType; 
import com.espertech.esperio.socket.config.SocketConfig; 

public class Demo { 

    public static class CEPListener implements UpdateListener { 

     private String tag; 
     public CEPListener (String tag) 
     { 
      this.tag = tag; 
     } 

public static void main(String[] args) throws IOException, InterruptedException { 
     Configuration configuration = new Configuration(); 

     Map<String, Object> eventProperties = new HashMap<String, Object>(); 
     eventProperties.put("sensorId", int.class); 
     eventProperties.put("GeoArea", String.class); 
     configuration.addEventType("MeteoEvent", eventProperties); 

     ConfigurationSocketAdapter socketAdapterConfig = new ConfigurationSocketAdapter(); 

     SocketConfig socketConfig = new SocketConfig(); 
     socketConfig.setDataType(DataType.OBJECT); 
     socketConfig.setPort(5002); 
     socketAdapterConfig.getSockets().put("MeteoSocket", socketConfig); 

     EPServiceProvider cepService = EPServiceProviderManager.getProvider("MeteoSocket",configuration); 

     EPRuntime cepServiceRT = cepService.getEPRuntime(); 

     EPAdministrator cepAdmin = cepService.getEPAdministrator(); 

     EsperIOSocketAdapter socketAdapter = new EsperIOSocketAdapter (socketAdapterConfig, "MeteoSocket"); 
     socketAdapter.start(); 

     EPStatement stmt = cepAdmin.createEPL("insert into JoinStream select * from MeteoEvent"); 

     EPStatement outputStatementX = cepAdmin.createEPL("select * from JoinStream"); 

     outputStatementX.addListener(new CEPListener("JS")); 

     cepService.initialize(); 

     Object lock = new Object(); 
     synchronized (lock) 
     { 
       lock.wait(); 
     } 
} 

如果有人需要一些时间来帮助我,请提前非常感谢您。

回答

4

问题解决了! Esper Dev列表非常有用。我学会了如何使用Esper +套接字通过测试类的位置here

最好的问候!