增加备注
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-10-07 21:27:44 +08:00
parent 874c8718b1
commit fac077d2b7
2 changed files with 11 additions and 0 deletions

View File

@ -1,4 +1,5 @@
using EntityFramework.Exceptions.Common;
using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common;
@ -36,6 +37,15 @@ public class AuditEntityInterceptor(IUserInfo _userInfo,
//////领域命令 同一个事务提交的一些逻辑类似Trigger 保存事务之前执行的一些逻辑) IMediator 和autofac 有冲突,不在一个事务,废弃。
//eventData.Context.AddDomainCommands();
//await DispatchDomainCommands(eventData.Context);
// var domainEvent = JsonSerializer.Deserialize(storedEvent.EventData, Type.GetType(storedEvent.EventType));
//// 序列化事件
//var eventData = JsonSerializer.Serialize(domainEvent);
//var storedEvent = new StoredEvent
//{
// EventType = domainEvent.GetType().Name,
// EventData = eventData
//};
//领域事件
eventData.Context.AddDomainEvents();

View File

@ -13,6 +13,7 @@ namespace IRaCIS.Core.Infra.EFCore.Interceptor
// IMediator 适用于单进程内的消息传递,不涉及外部消息中间件(如 RabbitMQ、Azure Service Bus 等) 使用本地的内存队列,而不是跨进程消息传递,适合轻量级、无中间件的场景
// 发件箱模式参考: https://dev.to/antonmartyniuk/use-masstransit-to-implement-outbox-pattern-with-ef-core-and-mongodb-oep#:~:text=MongoDB%20replica%20set%20is%20required%20for%20both%20publisher%20and%20consumer
// 1、IPublishEndpoint 才会将事件存储到发件箱表中, 高级IBus接口时 - 消息不会存储在发件箱中必须有savechanges 才会一起提交保存到数据库中
// 2、进入消息代理之前发布事件在OutboxState OutboxMessage 进入消费者以后已经删除OutboxState OutboxMessage消费失败需要修改代码重新发布然后之前消费事件的重新处理错误处理参考https://www.youtube.com/watch?v=3TMKUu7c4lc
public class DispatchDomainEventsInterceptor(IMediator _mediator) : SaveChangesInterceptor
{