我有一个在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个主题:
虽然这一切都工作但我想知道这一切是什么?
答案 0 :(得分:2)
stateless1
是您的服务结构总线实例,即为该总线创建的临时队列。
webapi1
是您的web api总线实例,用于发送到无状态服务,也是一个临时队列。
fabric-test
是接收端点的服务队列。
namespace.core.testmessage
是您的消息类型,由您的服务端点订阅。
这全部由MassTransit构建,以支持您正在使用的消息结构。临时队列在5分钟后消失,不用担心 - 他们只是为了解决和维持与ASB的连接。
如果该类型的消息已发布,则会创建该主题,以便您的服务端点接收该消息。如果您不想为特定服务端点的消息类型订阅主题,则可以在该端点的配置中指定SubscribeMessageTopics = false
。