2014-11-04 64 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