RabbitMQ 也能使命必達,正確處理每則訊息

教你怎麼實作訊息處理流程的保證機制

Bruce Hsu
7 min readMar 15, 2022

前言

這篇文章,心血來潮來談談之前介紹過的 RabbitMQ。

按照以往程式運用 RabbitMQ 送訊息時,絕對會承受一些問題

  • 訊息有可能會石沈大海,不知道死在什麼地方找不到。
  • 程式在推送訊息時,沒關注過失敗的情境,導致一問三不知,因為你的 log 看不出來,也沒通知 user 狀況
  • 使用 RabbitMQ 會造成分散式架構上的問題,必定會有某個節點上的 service 搞事、爆炸、丟訊息的狀況。

自發性問自己的服務可能產生的問題,該如何解決,也是 Software Engineer 應該有的基本素養。

🔥 那下面讓我們談談這些事情吧 🔥

言歸正傳

我們要如何讓以下這個再正常不過的流程中,RabbitMQ 做到使命必達,並且盡可能的不要有重複處理相同訊息的情況呢?

上面這個過程可以分成三個階段討論,我分別用了 1 、2、3 標示在圖上。接著我們來了解問題如何發生的。

讓我們用前次的 project,繼續完善一些功能

--

--

Bruce Hsu

I'm a Java engineer, eager to learn new skills, technique and willing to take challenges.