如何正确监控 MassTransit Courier 路由单?

问题描述

我设法通过一系列活动实施了 Masstransit Courier 路由单。我决定添加一个状态机来监控它,所以我创建了单独的事件和状态,并使用 EF Core 作为 Automatonymous 状态机的存储。为了跟踪当前状态,我在每个活动执行结束时发布一个事件。一切正常,我可以监控数据库中路由单的当前状态。

但这是最好的方法吗?根据 Masstransit 文档中的这一部分:https://masstransit-project.com/advanced/courier/events.html 看起来事件应该自动发布。那么也许有另一种方法来监控路由单,不需要创建事件并在每个活动中手动发布它们?

解决方法

在执行路线单时,MassTransit 将为每个路线单活动以及路线单完成后的事件publish events

您可以使用这些事件(而不是创建您自己的事件)来从头到尾监控路由单(所有事件都由 TrackingNumber 关联)。

如果您的系统中有多个针对不同交易的路由单,您可以指定 subscriptions 将这些事件直接路由到每个交易的跟踪 saga,而不是发布,这样它们就不会重叠 进入单独的跟踪传奇。

这些事件最适合用于监控/跟踪路由单执行,不应代替业务事件使用。例如,如果您的活动对信用卡收费,那么发布一个“CreditCardCharged”事件,其中包含用于审计/跟踪信用卡交易的详细信息,用于会计/法律目的是有意义的。