mad*_*dog 2 .net nservicebus message-queue
我正在使用NServiceBus向后端系统发送订单(每个命令一个订单).每个订单都有一个客户(父母).成功保存订单后,后端系统会发布"订单已接受"事件.该事件有多个订户,其中一个是文件生成器组件,它生成要由第三方使用的XML文件.此文件是按客户生成的.由于每次发布"订单接受"事件时发布的事件都处于订单级别,因此文件组件会为客户创建整个文件.
NServiceBus中是否有一种方法可以在订阅者处对事件进行分组,这样,如果同一个客户有多个订单,我们可以减少文件生成器运行的次数?
我们的一个想法是让用户在一段固定时间内休眠,当它被唤醒时,它可以将消息分组到客户的队列中,并为每个客户生成一次文件.这听起来像个好主意吗?
提前致谢.
这样做的最好方法是使用具有去抖动行为的Saga.
传奇会订阅该事件,并且每次观察时,都会在您愿意等待的一段时间内请求新的超时,比方说5分钟.
如果超时消息到达并且自设置以来没有观察到其他事件,则可以发送命令来运行文件生成器.
这假设传入的事件将以喷射的形式到达,也就是说,您将在一段时间内收到它们的组合,然后没有.使用这样的去抖动器,如果你每分钟永远收到一个事件,那么永远不会执行文件生成器.