如何配置 MassTransit Saga 以使用多个自定义命名主题?
How to configure MassTransit Saga to use several custom named topics?
我有一个 Saga,它从队列接收命令,将命令发送到另一个队列,转换到另一个状态并等待来自自定义名称的主题的事件(MassTransit 未将其命名为事件键入名称)。我遇到一个问题,Saga 没有对来自自定义命名主题的事件做出反应。
Saga 执行以下操作:
从队列中接收命令。
cfg.ReceiveEndpoint("submit-order-queue", configureEndpoint =>
{
configureEndpoint.ConfigureSaga<OrderShipmentState>(context);
configureEndpoint.RequiresSession = true;
});
向另一个队列发送命令并转换到另一个状态。我正在使用自定义 activity.
消费主题中的事件。需要指定主题名称。
cfg.SubscriptionEndpoint(
"subsctiption1", "custom-name-topic",
configure =>
{
configure.ConfigureSaga<OrderShipmentState>(context);
});
我发现了几个类似的问题,例如 以及 Chris Patterson 的回答
If you want to use a subscription endpoint for a saga, you would need
to configure the saga on the corresponding topic for each event.
我试图用上面的代码实现这个,但我还没有弄清楚如何在上面的配置中指定事件。以下方法对我不起作用,因为我需要指定自定义主题名称:
void SubscriptionEndpoint<T>(string subscriptionName, Action<IServiceBusSubscriptionEndpointConfigurator> configure) where T : class;
结果,我能够执行第 1 步和第 2 步,但在第 3 步,我在 ASB 订阅中收到一个事件,但 Saga 没有对该事件做出反应。
对我做错了什么有什么建议吗?
在上面的配置中,接收端点将为 saga 处理的每个事件创建订阅,这些订阅会将发送到主题的消息转发到 submit-order-queue
。您不需要创建订阅端点。
我有一个 Saga,它从队列接收命令,将命令发送到另一个队列,转换到另一个状态并等待来自自定义名称的主题的事件(MassTransit 未将其命名为事件键入名称)。我遇到一个问题,Saga 没有对来自自定义命名主题的事件做出反应。
Saga 执行以下操作:
从队列中接收命令。
cfg.ReceiveEndpoint("submit-order-queue", configureEndpoint => { configureEndpoint.ConfigureSaga<OrderShipmentState>(context); configureEndpoint.RequiresSession = true; });
向另一个队列发送命令并转换到另一个状态。我正在使用自定义 activity.
消费主题中的事件。需要指定主题名称。
cfg.SubscriptionEndpoint( "subsctiption1", "custom-name-topic", configure => { configure.ConfigureSaga<OrderShipmentState>(context); });
我发现了几个类似的问题,例如
If you want to use a subscription endpoint for a saga, you would need to configure the saga on the corresponding topic for each event.
我试图用上面的代码实现这个,但我还没有弄清楚如何在上面的配置中指定事件。以下方法对我不起作用,因为我需要指定自定义主题名称:
void SubscriptionEndpoint<T>(string subscriptionName, Action<IServiceBusSubscriptionEndpointConfigurator> configure) where T : class;
结果,我能够执行第 1 步和第 2 步,但在第 3 步,我在 ASB 订阅中收到一个事件,但 Saga 没有对该事件做出反应。
对我做错了什么有什么建议吗?
在上面的配置中,接收端点将为 saga 处理的每个事件创建订阅,这些订阅会将发送到主题的消息转发到 submit-order-queue
。您不需要创建订阅端点。