作者appleboy46 (小惡魔)
看板Soft_Job
標題[心得] 用 Go 語言實現 Pub/Sub 模式
時間Sun May 1 17:40:59 2022
相信大家都知道發布 / 訂閱模式,開發者可以透過第三方開源工具像是 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. 面試來討論這題,應該可以有不錯的交流?
--
AppleBoy Blog:
http://blog.wu-boy.com
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.110.136.13 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1651398064.A.707.html
1F:推 devilkool: 有點興趣,先推再看 05/01 17:54
2F:推 shaomi: 推 來研究 05/01 17:56
3F:推 gofigure: 蠻好奇怎麼會用time sleep而不是用wait group 05/01 19:02
4F:→ gofigure: 有些細節還是可以看出來一些東西 ... 05/01 19:02
5F:推 wahaha279: 酷 05/01 19:18
6F:推 lovdkkkk: 模式本身跟實作細節還好 使用情境可以問很多東西 不過那 05/01 20:51
7F:→ lovdkkkk: 些直接拿 redis 等工具的做法去問也一樣 還比較好聚焦 05/01 20:53
8F:推 YorkLai: 推推 05/01 23:02
9F:→ appleboy46: @gofigure main.go 用來 Demo 而已,就沒有進一步考慮 05/02 07:16
10F:→ appleboy46: 需要在 main 結束前等待 Message 處理完畢。 05/02 07:16
11F:→ appleboy46: 做服務還是要把 Graceful Shutdown 考慮進去 05/02 07:18
13F:推 ThisRay: 推 05/02 09:41
14F:推 popcorny: 推! 05/03 23:11
15F:推 blazers08: 推 05/05 15:30
16F:推 piece601: 這不是傳說中的 Appleboy 嗎 05/10 14:33