参考


  1. https://www.sundstrom.dev/articles/building-distributed-apps-with-masstransit
  2. https://code-maze.com/masstransit-rabbitmq-aspnetcore/
  3. 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 项目, 优势就非常突出了, 它很好的封装了底层的消息中间件, 开发效率会大大提升的.