參考
- https://www.cnblogs.com/sheng-jie/p/MassTransit-NET-Distributed-Application-Framework.html
- https://www.sundstrom.dev/articles/building-distributed-apps-with-masstransit
- https://code-maze.com/masstransit-rabbitmq-aspnetcore/
- https://www.gyata.ai/asp-net/masstransit
分散式系統常見的架構是微服務和SOA, 在實踐層面微服務引入了服務發現和服務註冊, SOA架構主要依賴服務匯流排, MassTransit可以歸為SOA一類,
MassTransit 功能
- 支援訊息的 pub/sub 訊息處理模式, 徹底解耦了訊息生產者和消費者. 而且是非同步訊息處理, 訊息消費端不會影響pub端的執行效率.
- 支援RPC呼叫, 即使用 request/response 模式, 和Http/GRPC相比, 我不認為有什麼明顯的優勢, 同時沒有Http/GRPC開放性的優勢.
- 內建重試、限流、斷路器等異常處理機制
- 支援 Open Telemetry 可觀察性
- 支援多種後臺, 包括 RabbitMQ/Azure ServiceBus/Amazon SQS/Kafka/PGSQL/MSSQL等
理解
使用MassTransit的突出優勢就是它支援非同步的 pub/sub 訊息處理模式, 解耦生產者和消費者, 如果專案中沒有這樣的場景, 使用它就沒有優勢, 直接Http/GRPC整合就可以了. 如果專案是那種訊息驅動的型別, 比如 MES 專案, 優勢就非常突出了, 它很好的封裝了底層的訊息中介軟體, 開發效率會大大提升的.