3

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

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

4

1 回答 1

5

执行传送单时,MassTransit 将发布每个传送单活动的事件以及传送单完成后的事件。

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

如果您的系统中有多个用于不同事务的路由单,您可以指定订阅以将这些事件直接路由到每个事务的跟踪 saga,而不是发布,这样它们就不会重叠到单独的跟踪 saga 中。

这些事件最适合用于监视/跟踪路由单执行,不应用于代替业务事件。例如,如果您的活动向信用卡收费,则发布“CreditCardCharged”事件以及出于会计/法律目的分别审计/跟踪卡交易的详细信息是有意义的。

于 2021-03-03T13:18:51.143 回答