如何實作簡單的持久性訊息佇列?

thumbnail

有時候在需要訊息傳遞的應用場景 , 因為需求簡單不想使用到像 RabbitMQ 這種企業級的訊息中介軟體 (middleware), 使用 Redis 雖然夠簡單但畢竟還是需要執行另一個進程 (process), 總還是有殺雞用牛刀的感覺 。 但是另一方面又有訊息不能遺失的需求 , 自己處理訊息持久性 (persistence) 實在麻煩 , 畢竟訊息儲存還是要支援 ACID 特性才能號稱做到不遺失 。

閱讀全文 ...

為什麼使用資料庫當作訊息佇列不是問題?

thumbnail

在山姆鍋頭幾年工作中 , 有一次的經驗讓我到現在還記得並引以為戒 。 話說這整件事情就跟使用關聯式資料庫當作訊息佇列 (message queue) 脫不了關係 。 將訊息放入資料庫的表格 , 然後定期輪詢 (polling) 查看是否有新訊息的這種方式 , 有點經驗的工程師應該知道會有所謂 「 忙碌迴圈 (busy waiting)」 的問題 , 讓山姆鍋告訴您為什麼 「 忙碌迴圈 」 不是問題 !

閱讀全文 ...