MassTransit AzureServiceBus生成队列

时间:2017-03-20 10:45:54

标签: azure-service-fabric azureservicebus masstransit

我有一个在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()));

然而,一切都很好 - 但是。

当我看到天蓝色的门户时,我可以看到已经创建了3个队列和1个主题:

  • desktopmmd2jga_stateless1_bus_qypoyyypboqbzhk5bdkg665cyh(队列)
  • desktopmmd2jga_webapi1_bus_qypoyyypboqbsitfbdkg665pdd(队列)
  • fabric-test(队列)
  • xxxxx.core.testmessage(topic)

虽然这一切都工作但我想知道这一切是什么?

1 个答案:

答案 0 :(得分:2)

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

这全部由MassTransit构建,以支持您正在使用的消息结构。临时队列在5分钟后消失,不用担心 - 他们只是为了解决和维持与ASB的连接。

如果该类型的消息已发布,则会创建该主题,以便您的服务端点接收该消息。如果您不想为特定服务端点的消息类型订阅主题,则可以在该端点的配置中指定SubscribeMessageTopics = false