MassTransit AzureServiceBus 生成的队列

2024-05-06

我有一个托管在 Azure Service Fabric 解决方案中的 MT 设置的工作配置。

我有一个发送消息的 API 和一个读取消息的无状态应用程序。

在无状态应用程序中,我告诉它使用类型的消息TestMessage具有以下内容:

container.Register(Classes.FromThisAssembly().BasedOn<IConsumer>());
var busControl = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
        {
            var h = cfg.Host(new Uri("sb://xxxxx.servicebus.windows.net"), host =>
            {
                host.OperationTimeout = TimeSpan.FromSeconds(5);

                host.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("RootManageSharedAccessKey", "******");
            });

            cfg.ReceiveEndpoint(h, "fabric-test", ec =>
            {
                ec.UseMessageScope<ConsumeContext>();
                ec.LoadFrom(_container);
            });
        });

在 API 中,我指定了结构测试队列并发送:

var p = await _bus.GetSendEndpoint(new Uri("sb://xxxxx.servicebus.windows.net/fabric-test"));

await p.Send(new TestMessage(Guid.NewGuid()));

然而,这一切都很好。

当我查看 azure 门户时,我可以看到已创建 3 个队列和 1 个主题:

  • 桌面mmd2jga_stateless1_bus_qypoyyypboqbzhk5bdkg665cyh(队列)
  • Desktopmmd2jga_webapi1_bus_qypoyyypboqbsitfbdkg665pdd(队列)
  • 结构测试(队列)
  • xxxxx.core.testmessage(主题)

虽然这一切都发生了work我想知道这一切是什么?


stateless1是您的服务结构总线实例,即为该总线创建的临时队列。webapi1是你的Web api总线实例,用于发送到无状态服务,也是一个临时队列。fabric-test是您的接收端点的服务队列。namespace.core.testmessage是您的消息类型,由您的服务端点订阅。

这全部由 MassTransit 构建,以支持您正在使用的消息结构。临时队列会在 5 分钟后消失,不用担心 - 它们只是用于寻址和维护与 ASB 的连接。

主题是在消息被发送时创建的发表该类型,以便您的服务端点接收它。如果您不想订阅特定服务端点的消息类型的主题,您可以指定SubscribeMessageTopics = false在该端点的配置中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MassTransit AzureServiceBus 生成的队列 的相关文章

随机推荐