MassTransit 在所有消息完成后发布一条消息

MassTransit publish a message when all messages complete

我正在使用 MassTransit 管理多个 HTTP post 进程,并希望在所有 HTTP post 完成后发布消息。使用 Sagas 可以做到这一点吗?我还没有找到这种情况的任何例子。这是我的用例示例 -

因此用户执行 4 次 HTTP posts(3 次带有数据,第 4 次表示完成)。当用户 post 表示上传已完成时,上传 post 可能仍在处理中,所以我想等到所有上传都已处理并且上传完成 post 已发送,然后触发另一条消息 (UploadProcessingFinished) 以继续执行工作流中的其他步骤。

你可以为此使用 saga,是的。如果恰好有四个步骤,正如您在上面所描述的那样,那么一个 saga 就会包含四个独立的事件。然后将 CompositeEvent 添加到当所有四个事件都已处理时触发的 saga。

如果在完成事件之前步骤是可变的,您可能希望每个上传的 Start/Finish 事件都有一个计数器,并且在考虑实际完成完整命令之前有一个超时。但除非绝对必要,否则我会尽可能避免这种复杂性。