2014-11-04 31 views
0

我想知道这是如何使用艾斯波的引擎(V5.0.0)可以配置引擎实例,这样他就可以在Java客户端应用程序连接到关系数据库,比如说pgSQL。艾斯波:如何配置艾斯波连接关系数据库中,通过JDBC,使用艾斯波的配置API

这是写能够从数据库(5.13. Accessing Relational Data via SQL)加入具有静态/历史数据事件流(或数据流)EPL查询必需的。也就是说,要从数据库中读取数据。 (写入数据库需要EsperIO adapter的使用。)

Esper's docs我弄清楚,ConfigurationConfigurationDBRef类应该用于配置通过其API艾斯波的数据库连接。

然而,在最好的我的研究,剩下的文档是不是整个配置过程中,我挣扎,很清楚。

回答

1

下面的代码片段显示了整个配置过程:

ConfigurationDBRef dbConfig = new ConfigurationDBRef(); 
dbConfig.setDriverManagerConnection("org.postgresql.Driver", 
            "jdbc:postgresql://localhost:5432/database_name", 
            "user", 
            "password"); 

Configuration engineConfig = new Configuration(); 
engineConfig.addDatabaseReference("database_alias", dbConfig); 

esperEngine = EPServiceProviderManager.getDefaultProvider(engineConfig); 

就是这样。 esperEngine将准备与database_alias作为查询statemet别名与数据库名称沟通你的引擎实例(用于查询的FROM子句)

您可以通过以下方式安装在艾斯波的情况下查询:

String statement = "SELECT datastream.column1, rel.column2"       + 
        "FROM Datastream.Measure AS datastream, "       + 
          "sql:database_alias ['SELECT column2 "      + 
               "FROM \"SchemaX\".\"TableY\" ] AS rel"; 

//Install this query in the engine 
EPStatement queryEngineObject = esperEngine.getEPAdministrator().createEPL(statement); 

//Associate a Listener to this query 
MyQueryListener listener = new MyQueryListener(); //that implements UpdateListener Interface 
queryEngineObject.addListener(listener); 
+0

嗨,我有同样的问题。我跟着你的同一步骤。但问题是我的听众没有收到任何数据库中的数据。 – Sajithv 2015-04-10 09:06:27

+0

和配置似乎工作正常,但没有结果。 – Sajithv 2015-04-10 09:07:07