在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题 [英] How to use a specified topic in a saga when using MassTransit on Azure ServiceBus

查看:0
本文介绍了在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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));

我希望在主题‘myTheme’上发布Second Message,但MassTransport却为此邮件创建了一个新主题。

推荐答案

MassTransport为每个邮件类型创建一个主题,并将邮件发布到相应的主题。建议不要将同一主题名称分配给多个邮件类型。

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

示例拓扑如下所示:

这篇关于在Azure ServiceBus上使用MassTransport时如何在传奇中使用指定主题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆