【发布时间】:2021-11-17 14:32:07
【问题描述】:
我有一个 Saga,它从队列接收命令,将命令发送到另一个队列,转换到另一个状态并等待来自主题的事件,该主题的名称是自定义的(不是由 MassTransit 命名为事件类型名称)。我遇到了一个问题,即 Saga 对自定义命名主题的事件没有反应。
Saga 做了以下事情:
-
从队列中接收命令。
cfg.ReceiveEndpoint("submit-order-queue", configureEndpoint => { configureEndpoint.ConfigureSaga<OrderShipmentState>(context); configureEndpoint.RequiresSession = true; }); -
将命令发送到另一个队列并转换到另一个状态。我正在使用自定义活动。
-
使用主题中的事件。需要指定主题名称。
cfg.SubscriptionEndpoint( "subsctiption1", "custom-name-topic", configure => { configure.ConfigureSaga<OrderShipmentState>(context); });
我发现了几个类似的问题,例如 this 以及 Chris Patterson 的回答
如果您想为 saga 使用订阅端点,您需要 为每个事件配置相应主题的 saga。
我尝试使用上面的代码来实现这一点,但我还没有弄清楚如何在上面的配置中指定事件。下面的方法对我不起作用,因为我需要指定自定义主题名称:
void SubscriptionEndpoint<T>(string subscriptionName, Action<IServiceBusSubscriptionEndpointConfigurator> configure) where T : class;
结果,我能够执行第 1 步和第 2 步,但在第 3 步时,我在 ASB 订阅中收到了一个事件,但 Saga 没有对该事件作出反应。
任何建议我做错了什么?
【问题讨论】:
标签: masstransit saga