[心得] 用 Go 語言實現 Pub/Sub 模式

作者: appleboy46 (小惡魔)   2022-05-01 17:40:59
相信大家都知道發布 / 訂閱模式,開發者可以透過第三方開源工具像是 Redis, NSQ 或
Nats 等來實現訂閱機制,本篇則是會教大家如何用 Go 語言寫出一個單機版本的
Pub/Sub 模式,在單一系統內非常輕量級,且不需要靠第三方服務就可以輕易實現。底下
會直接用單一訂閱 Topic 機制來撰寫 Publisher 及 Subscriber。
00:00 為什麼要用 Go 語言實現 Pub/Sub 模式
01:00 Subscriber 訂閱訊息
05:14 Publisher 發送訊息
07:19 Unsubscribe 取消訂閱
10:01 實際範例
11:14 使用 goleak 偵測代碼是否有 leaks
15:18 心得
部落格: https://bit.ly/pub-sub-in-go
程式碼: https://bit.ly/3P0WzXN
影片: https://www.youtube.com/watch?v=blaYXmmA8zw
PS. 面試來討論這題,應該可以有不錯的交流?
作者: devilkool (對貓毛過敏的貓控)   2022-05-01 17:54:00
有點興趣,先推再看
作者: shaomi (kerker)   2022-05-01 17:56:00
推 來研究
作者: gofigure (平行世界)   2022-05-01 19:02:00
蠻好奇怎麼會用time sleep而不是用wait group有些細節還是可以看出來一些東西 ...
作者: wahaha279 (哇哈哈:3)   2022-05-01 19:18:00
作者: lovdkkkk (dk)   2022-05-01 20:51:00
模式本身跟實作細節還好 使用情境可以問很多東西 不過那些直接拿 redis 等工具的做法去問也一樣 還比較好聚焦
作者: YorkLai (Orange)   2022-05-01 23:02:00
推推
作者: appleboy46 (小惡魔)   2022-05-02 07:16:00
@gofigure main.go 用來 Demo 而已,就沒有進一步考慮需要在 main 結束前等待 Message 處理完畢。做服務還是要把 Graceful Shutdown 考慮進去可以參考這篇文章: https://bit.ly/3F8QiVq
作者: ThisRay (TR)   2022-05-02 09:41:00
作者: popcorny (畢業了..@@")   2022-05-03 23:11:00
推!
作者: blazers08 (我是傳奇)   2022-05-05 15:30:00
作者: piece601 (屁屎)   2022-05-10 14:33:00
這不是傳說中的 Appleboy 嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com