如何正确监控 MassTransit Courier 路由单?
How to monitor MassTransit Courier routing slip properly?
我设法通过一系列活动实现了 MassTransit Courier 路由单。我决定添加一个状态机来监视它,因此我创建了单独的事件和状态,并使用 EF Core 作为自动状态机的存储。为了跟踪当前状态,我在每个 activity 执行结束时发布了一个事件。一切正常,我可以监控数据库中路由单的当前状态。
但这是最好的方法吗?根据 MassTransit 文档中的这一部分:https://masstransit-project.com/advanced/courier/events.html 看起来事件应该自动发布。所以也许还有另一种监控路由单的方法,它不需要创建事件并在每个 activity?
中手动发布它们
在执行路由清单时,MassTransit 将 publish events 为每个路由清单 activity 以及路由清单完成后的事件。
您可以使用这些事件,而不是创建自己的事件,从头到尾监控传送名单(所有事件都通过 TrackingNumber
关联)。
如果您的系统中有多个路由单用于不同的交易,您可以指定 subscriptions 将这些事件直接路由到每个交易的跟踪 saga,而不是发布,因此它们不会 重叠 到单独的跟踪 sagas。
这些事件最好用于 monitoring/tracking 传送名单执行,不应代替业务事件使用。例如,如果您的 activity 从信用卡中扣款,那么出于 accounting/legal 目的,单独发布包含 auditing/tracking 卡交易详细信息的“CreditCardCharged”事件是有意义的。
我设法通过一系列活动实现了 MassTransit Courier 路由单。我决定添加一个状态机来监视它,因此我创建了单独的事件和状态,并使用 EF Core 作为自动状态机的存储。为了跟踪当前状态,我在每个 activity 执行结束时发布了一个事件。一切正常,我可以监控数据库中路由单的当前状态。
但这是最好的方法吗?根据 MassTransit 文档中的这一部分:https://masstransit-project.com/advanced/courier/events.html 看起来事件应该自动发布。所以也许还有另一种监控路由单的方法,它不需要创建事件并在每个 activity?
中手动发布它们在执行路由清单时,MassTransit 将 publish events 为每个路由清单 activity 以及路由清单完成后的事件。
您可以使用这些事件,而不是创建自己的事件,从头到尾监控传送名单(所有事件都通过 TrackingNumber
关联)。
如果您的系统中有多个路由单用于不同的交易,您可以指定 subscriptions 将这些事件直接路由到每个交易的跟踪 saga,而不是发布,因此它们不会 重叠 到单独的跟踪 sagas。
这些事件最好用于 monitoring/tracking 传送名单执行,不应代替业务事件使用。例如,如果您的 activity 从信用卡中扣款,那么出于 accounting/legal 目的,单独发布包含 auditing/tracking 卡交易详细信息的“CreditCardCharged”事件是有意义的。