事件总线细化
我有一个事件继承IIntegrationDomainEvent,当我使用IEventBus时希望只在当前进程发布事件,建议如IIntegrationEventBus一样,新构建一个ILocalEventBus,他只会在本地发布事件。 需求场景,我在web api接收这个集成事件时,不会做业务处理,希望发布成本地事件,在业务层处理,我现在只能新建一个属性一样的类,使他只继承Event来实现,这有点冗余
IEventBus 就是你说的ILocalEventBus,你的需求场景是想同一个事件,支持集成事件和本地事件,发送那种自己选择?
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