gpt4 book ai didi

nservicebus - 引发事件或发送命令?

转载 作者:行者123 更新时间:2023-12-01 18:32:51 25 4
gpt4 key购买 nike

我们创建了一个网络应用程序,它是一个电子书阅读器。因此需要记住的一件事是,该领域并不完全是阅读实体书的领域。我们现在正尝试通过存储用户访问的电子书页面的信息来收集用户的阅读行为。由于此信息进入数据仓库,我们认为从书籍 Controller 引发事件是正确的方法。

总线.Publish()

但我们不确定它应该是发布还是发送,因为此事件实际上只有一个消费者,那就是我们的商业智能团队。我们还了解到,不建议从网络应用程序发布(http://www.make-awesome.com/2010/10/why-not-publish-nservicebus-messages-from-a-web-application/)。所以现在的替代方法是使用bus.Send(RecordPageAccessedCommand)

但是上面的命令无论如何都不会改变我们的应用程序状态。那么这真的是一个命令吗?我有一种感觉,我们犯的错误是使用 NServiebus 的功能(发布、发送)并试图将其与命令或事件等同起来。

请告诉我解决方案是什么。

最佳答案

根据您提供的信息,我建议“发送”到您的端点。

发送命令意味着处理消息的端点应该执行某些操作。在您的情况下,记录页面被访问是端点应该做的事情。

发布事件意味着您正在通知 0..n 个订阅者发生了某些事情。如果系统中的某些其他服务对页面被访问的事实感兴趣,您可以从命令处理程序发布事件。这里的关键点是,在您记录下来之前,它不是“事实”。

我发现一旦数据可用,消费者往往会增长。能够从命令处理程序发布事件将使通知新消费者变得轻而易举,而无需更改/冒现有代码库的风险。

关于nservicebus - 引发事件或发送命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10386155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com