我正在实施用户管理微服务(MS),并希望了解我所做的是否正常。用户是从UI创建的,它与API交互。 API对用户管理MS进行RPC调用,并将CreateUserCommand发布到InMem总线。然后,消费者通过在DB中创建用户来处理命令,但之后我需要在Auth0中注册的用户 - 这样做的方法是将不同的命令发送到持久队列,以便订阅者选择它使用Auth0注册该用户(如果无法访问Auth0则为持久队列)。成功完成后,我可以发布UserCreatedEvent吗?
非常感谢任何帮助。
答案 0 :(得分:1)
您有两个有界上下文:User management
和Authentication
。
User management
BC处理用户的生命周期(创建,变异和删除)。
Authentication
BC处理用户如何在系统中识别自己。
因此,即使有(但)没有可能在系统中识别自己,用户也可以存在是一个有效的假设。
话虽如此,您应该在用户管理BC处理AUserWasCreatedEvent
后立即发出CreateUserCommand
,因为在那一刻用户出生了。它有一个ID,我们将其命名为UserID
,因此它存在。
然后,此用户需要一个平均值来标识自己,Saga
(或Process manager
或您想要调用它的任何内容)捕获事件并创建一个CreateAuth0UserCommand
发送它通过调用Auth0 API到Authentication
BC。 API会回复一些数据,可能包括token
;该令牌由Authentication
BC处理,并与UserID
。