生成和消费业务级事件的最佳实践建议

4
我们正在为明年开发的ASP.NET MVC / C#新软件应用程序完成架构计划。
我们计划按照领域驱动设计模式和技术来构建应用程序,我想知道是否有人对所提出的系统方面有任何建议/看法。
其中一个业务要求是允许用户选择任意数量的业务事件,并在该事件发生时选择如何通知他们。
我很喜欢引发领域事件的想法,但我很难想象最好的方法是如何动态消费它们。
是否有人构建过类似的东西并可以分享一些建议或想法?
2个回答

4

您可能想看一下Udi Dahan关于业务事件的文章


那么您该如何处理这样的事件呢?

在Udi Dahan的文章中,我得到的印象是他只有一个进程内代理(实际上是一个观察者),它会在事件发生时通知所有订阅者。这是无条件的,因此每个订阅者基本上都作为自己的过滤器,决定是否要处理相关事件。

只要事件的触发本身是在进程内完成的,通知所有订阅者也可以在进程内完成,只要代理确保通知是异步的,以便订阅者不会相互阻塞(或阻塞触发事件的业务流程)。

在许多情况下,这可能已经足够了,但在其他情况下,您可能需要更高的可扩展性或鲁棒性。这些问题可以通过(事务性)队列来解决,但显然会增加复杂性。在这种情况下,代理仍然存在,但它不直接通知订阅者,而是将表示事件的消息添加到所有订阅队列中。


你好,是的,我确信并喜欢Udi对领域事件的看法(我没有很清楚地表明我已经看过了)。我缺少的部分是事件的消费。我是否设置一个监听每个事件的断路器,然后根据它们是否应该传递给感兴趣的用户做出决策?如果这是在运行过程之外的,我该如何消费这些事件?我应该将它们推入某种类型的消息队列中吗?谢谢 - John Kattenhorn
好的,没问题 :) 我稍微详细解释了一下我的答案。 - Mark Seemann

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接