magiboys
magiboys
 目前我的目录结构是这样,仅供参考
> 请提供具体业务场景 从第三方批量抓取大量数据,在保存每一条数据时都会发布一条分析这条数据的集成事件,目前数据全部保存成功后,从IntegrationEventLog表发布集成事件的任务有性能问题,要很久才能发布完,应该是逐个调用Dapr发布事件导致有性能损耗 优化意见:同样一个topicName,可调用BulkPublishEventAsync批量发布事件
> IEventBus 就是你说的ILocalEventBus,你的需求场景是想同一个事件,支持集成事件和本地事件,发送那种自己选择? 对的,我看了IEventBus的实现,如果继承了集成事件接口会发布集成事件,但是我只想发布本地事件
重复定义一个事件继承不就是冗余,而且本地事件总线和集成事件总线分离,更方便开发者自己控制
> 你先定义一个本地事件,在继承本地事件定义继承时间不就可以避免冗余了吗 在官网的示例中,我发布一个集成领域事件,先在Contracts层(默认没有引用Masa.BuildingBlocks.Ddd.Domain)定义集成事件UserNameChangedntegrationEvent(Contracts类,能被其他微服务直接引用),然后在领域层定义UserNameChangedDomainEvent(领域层类,不能被其他微服务直接引用)继承UserNameChangedntegrationEvent和实现IIntegrationDomainEvent, 发布的时候发布UserNameChangedDomainEvent, 订阅的时候UserNameChangedntegrationEvent接收,但是dapr一个服务只能一个在一个地方订阅,现在我这个服务有多个地方都要处理这个事件(他们逻辑是单独的,比如一个更新A表,一个更新B表)。 所以我想用IEventBus 发布一个只在当前服务本地处理的UserNameChangedntegrationEvent事件,现在是实现不了的,因为IEventBus 发布时会判断这个事件如果是ntegrationEvent,又会发布成集成事件,造成死循环. 所以现在的处理方案是复制一个属性一模一样的UserNameChangedEvent事件(默认普通Event定义在领域层而不是Contracts层)发布,然后在A表Handler和B表Hanlder分别处理。 而且如果我有另一个微服务也要这样处理的话,要在每个微服务中复制一个UserNameChangedEvent事件(因为普通Event定义在领域层) 现在的冗余就是,我一个集成事件处理,至少要定义三个类,而且每个不同服务要重复定义
@MayueCif
> 您使用的是哪个特定的 PubSub 组件? RabbitMQ