[Golang] mynats(對nats.go的二次封裝)

0x0 前言

最近項目開始使用nats做爲消息中間件。
nats的引入確實解決項目不少痛點。
好比:
1)服務動態橫向擴展
2)負載均衡(nats的均衡機制只有隨機,不過對咱們來講也夠用了)
3)多服務之間方便快捷的消息通訊
 

0x1 mynats是什麼

mynats是對nats.go的一個包裝。目的是方便快捷的註冊消息回掉,而且支持同步handler和異步handler。

0x2 特性

* 免去定義常量subject字符串的步驟,發送的proto參數類型名做爲publish的subject,用handler的proto參數類型名做爲subscribe的subject。而且依然支持通配符
* 避免發送參數類型和接受函數參數類型不匹配
* 可通知(無需返回的),可請求和回覆
* 可同步請求可異步請求,可同步回覆可異步回覆
* 支持安全退出。安全退出會把異步處理完才退出
* 支持分組。方便用同一套nats服務器,業務邏輯分組互不影響

0x3 問題

* 運行時反射類型得到類型名,而後再拼接subject的性能
* 以類型做爲subject,雖然解決容易不匹配的問題,單若是有公用類型就須要外面再包一層起其餘的名字的類型
 

0x4 代碼庫

github:https://github.com/bailu1901/mynatsgit

相關文章
相關標籤/搜索