[心得] 用 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