gpt4 book ai didi

.net - 在 NServiceBus 中对发布的事件进行分组

转载 作者:行者123 更新时间:2023-12-04 09:11:09 24 4
gpt4 key购买 nike

我正在使用 NServiceBus 向后端系统发送订单(每个命令一个订单)。每个订单都有一个客户(父级)。订单保存成功后,后台系统发布“订单已接受”事件。此事件有多个订阅者,其中一个是文件生成器组件,它生成一个 XML 文件供第三方使用。该文件是为每个客户生成的。由于每次发布“已接受订单”事件时发布的事件都处于订单级别,因此文件组件会为客户创建整个文件。

在 NServiceBus 中是否有一种方法可以在订阅者处对事件进行分组,以便在同一客户有多个订单时我们可以减少文件生成器运行的次数?

我们的一个想法是让订阅者休眠一段固定的时间,当它醒来时,它可以按客户对队列中的消息进行分组,并为每个客户生成一次文件。这听起来是个好主意吗?

提前致谢。

最佳答案

最好的方法是使用具有去抖器行为的 Saga。

saga 会订阅该事件,并且每次观察到该事件时,都会请求一个新的超时时间,您愿意等待一段时间,比如 5 分钟。

如果超时消息到达并且自设置以来没有观察到其他事件,那么您可以发送命令来运行文件生成器。

这假设传入的事件会突飞猛进,也就是说,您会收到一组靠近的事件,然后在相当长的一段时间内没有收到。使用这样的去抖动器,如果您永远每分钟收到一个事件,那么文件生成器将永远不会被执行。

关于.net - 在 NServiceBus 中对发布的事件进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257948/

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