【问题标题】:How to use a specified topic in a saga when using MassTransit on Azure ServiceBus在 Azure ServiceBus 上使用 MassTransit 时如何在 saga 中使用指定主题
【发布时间】:2020-12-11 11:27:38
【问题描述】:

我希望特定传奇的所有消息都发生在同一个主题上。

我的传奇故事是这样设置的:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMassTransit(x =>
    {
        var machine = new MyStateMachine();
        var repository = new InMemorySagaRepository<MyState>();

        x.UsingAzureServiceBus((ctx,cfg) => {
            cfg.Host(config.ServiceBusConnectionString);

            cfg.SubscriptionEndpoint("mySub", "myTopic", e =>
            {
                e.StateMachineSaga(machine, repository);
            });
        });
    });
}

在状态机中我这样做:

Initially(
   When(FirstEvent)
   .PublishAsync(context => context.Init<SecondMessage>(new { TestParam = "test"}))
   .TransitionTo(FirstState));

我希望将 SecondMessage 发布在主题“myTopic”上,但 MassTransit 会为此消息创建一个新主题。

【问题讨论】:

    标签: asp.net-core azureservicebus masstransit


    【解决方案1】:

    MassTransit 为每个消息类型创建一个主题,并将消息发布到其相应的主题。不建议为多个消息类型分配相同的主题名称。

    如果您想为 saga 使用订阅端点,则需要在每个事件的相应主题上配置 saga。默认情况下,MassTransit 会将每个 saga 事件的消息主题转发到接收端点队列。

    一个示例拓扑如下所示:

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多