我对域事件进行了一些小型研究,并找到了几个不同的解决方案
问题:
还有一个额外的问题。
例如:创建和支付订单时,必须获得状态" OrderPaid"。
因为购买和订购是两个不同的上下文,所以在订单创建之后我们需要提升一个域事件,这应该由购买有界上下文中的事件处理程序处理,但是在事件处理的结果中,应该再增加一个域事件 - OrderPaid,可能再次由Order上下文处理。使用monolith应用程序,似乎一个解决方案可能是:将Order对象传递给事件处理程序以实现预期的行为。在这种架构风格中,还有其他方法可以解决它吗?
答案 0 :(得分:1)
发明域事件是为了提供更加封装的域模型。没有纯粹的实现,只是不同的实现有不同的权衡。您可以将您的活动放在同一个项目中,并且在您引用的文章中对事件的命名有很多指导。
如果您希望处理在不同有界上下文之间最终一致的长时间运行进程,我可能会考虑使用共享消息总线,如NServiceBus或MassTransit。