2010-04-22 57 views
4

我將開發一個涉及數據採集服務器的系統,每個採集將填滿一行。我還需要有能力通知用戶應用何時獲取新數據。同時使用消息隊列和數據庫

從我已閱讀,它不是使用一個數據庫作爲一個消息隊列,反之亦然一個好主意,但我想知道如果我能同時使用?

獲取應用可以在消息系統中添加新行到數據庫,然後通知監聽器。這是否是這種類型系統的最佳方法?它會太複雜嗎?有沒有一種設計模式已經實現了這一點?

+0

@ CookieOfFortune-我有同樣的問題掙扎。你有沒有一篇文章指出爲什麼要使用消息隊列而不是數據庫? – 2012-07-17 22:33:55

+0

男人,這個問題很久以前。我認爲我從中得出的一點是,「事件」和「持久性」應該是分開的。如果你願意,你可以使用數據庫來實現事件,但是你應該保持概念上獨立於存儲。僅使用消息具有優勢,因爲您的進程可以在沒有狀態的情況下運行這可以使你的代碼更簡單(特別是如果你想並行化)。就使用消息隊列而言,它們專用於事件。這意味着他們可能會有更好的性能,並允許更復雜的消息傳遞方案。 – CookieOfFortune 2012-07-18 16:48:47

回答

2

是的,在數據​​庫中插入一行並更新GUI是兩個不同的操作,應該將它們分開。

你的建議是什麼聽起來不錯:

  1. 插入一行在DB
  2. 經由通知機制通知用戶的應用程序(聽衆會做得很好)。