基于Abp VNext框架设计
abp 通过 IDistributedEventBus 接口集成自 IEventBus 实现分布式事件消息的发布订阅。 IEventBus 在什么时机触发 PublishAsync ? 当前UnitOfWork完成时,触发 IEventBus 的 PublishAsync 在没有事务环境下,同步调用 IEventBus 的 PublishAsync abp 默认实现基于RabbitMq消息队列 Volo.Abp.EventBus.RabbitMQ 实现分布式消息的发布与订阅。 消息治理核心问题: 生产端如何保证投递成功的消息不能丢失。 Mq自身如何保证消息不丢失。 消费段如何保证消费端的消息不丢失。 基于abp 默认实现的DistributedEventBus不能满足以下场景: Publisher 生产者无法保证消息一定能投递到MQ。 Consumer 消费端在消息消费时,出现异常时,没有异常错误处理机制(确保消费失败的消息能重新被消费)。 我们引入 Masstransit ,来提升abp对消息治理能力。 Masstransit提供以下开箱即用功能: Publish/Send/Request-Response等几种消息投递机制。 多种IOC容器支持。 异常机制。 Saga事务管理。 事务活动补偿机制(Courier) 消息审计 消息管道处理机制 Abp 框架下事件消息集成