2011-07-24 45 views
1

可能有人建議什麼去了解這一點的最好辦法:異步從數據庫數據的連續輪詢推到Java的客戶端

我喜歡做的是畫一個數據庫表的連續輪詢(或查詢)。無論何時發生新的更新,我都希望將它推送到Java應用程序中的客戶端。這個想法是用戶可以建議他們想要訂閱的數據,並定義一個事件處理程序來處理任何傳入的數據。

因此,我需要在後臺完成輪詢。但是我似乎無法正確地做到這一點。我正在尋找使用本地JVM pub/sub的簡單事件總線,但我似乎無法獲得異步連續輪詢。

+1

什麼用戶界面?搖擺或網絡? – Jonas

+0

你使用了一個'定時器'嗎? – toto2

+0

@Jonas目前它只是一個Java庫。我希望用戶定義一個事件處理程序來處理他們想要訂閱的事件。在發佈方面,表格中的新條目充當事件進來。 – Larry

回答

1

看看java.util.concurrent。您可以創建一個調度程序,以便像使用ScheduledThreadPoolExecutor一樣利用線程池以給定時間間隔運行。

+0

謝謝,您是否碰巧知道網絡上的任何優秀示例/示例代碼? – Larry

+0

@Larry,只是看一個這[javadoc](http://download.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html)作爲預定作業的一個好例子。你可以讀你的數據庫,注意'Ru nnable'類是爲簡潔而定義的內聯類,但它可以在它自己的.java文件中定義並在此處實例化。 – jiggy

2

您的解決方案有很多缺點。
更好的解決方案是創建業務邏輯,負責保存數據庫中的數據和通知。例如,您可以創建訂閱了JMS主題的應用程序。另一個組件接收調用來處理和保存數據。它存儲數據,然後發送此操作的通知。訂閱該主題的所有組件都會收到此通知並作出相應的反應。

+0

+1:很好的建議!現在只剩下2票直到充值: –

+0

That'a假設他的應用程序也負責填充數據 – jiggy

+0

謝謝,但JMS似乎太複雜,不能實現。是否有更簡單的解決方案?這就是爲什麼我想到一個簡單的ESB就像http://code.google.com/p/simpleeventbus/,但是我試圖獲得連續的數據庫輪詢/讀取? – Larry

相關問題