MassTransit AzureServiceBus 生成的队列
MassTransit AzureServiceBus generated queues
我有一个 MT 设置的工作配置,它托管在 Azure Service Fabric 解决方案中。
我有一个发送消息的 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 中我指定了 fabric-test 队列并发送:
var p = await _bus.GetSendEndpoint(new Uri("sb://xxxxx.servicebus.windows.net/fabric-test"));
await p.Send(new TestMessage(Guid.NewGuid()));
而且一切都很好 - 然而。
当我查看 Azure 门户时,我可以看到已创建 3 个队列和 1 个主题:
- desktopmmd2jga_stateless1_bus_qypoyyypboqbzhk5bdkg665cyh(队列)
- desktopmmd2jga_webapi1_bus_qypoyyypboqbsitfbdkg665pdd(队列)
- 结构测试(队列)
- xxxxx.core.testmessage(话题)
虽然这一切都有效我想知道这是什么?
stateless1
是您的服务结构总线实例,即为该总线创建的临时队列。
webapi1
是你的web api 总线实例,用于发送到无状态服务,也是一个临时队列。
fabric-test
是您的接收端点的服务队列。
namespace.core.testmessage
是您的消息类型,由您的服务端点订阅。
这都是由 MassTransit 构建的,以支持您正在使用的消息结构。临时队列在 5 分钟后消失,不用担心 - 它们只是用于寻址和维护与 ASB 的连接。
如果 发布了 那种类型的消息,就会创建主题,以便您的服务端点接收它。如果您不想为特定服务端点的消息类型订阅主题,您可以在该端点的配置中指定 SubscribeMessageTopics = false
。`
我有一个 MT 设置的工作配置,它托管在 Azure Service Fabric 解决方案中。
我有一个发送消息的 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 中我指定了 fabric-test 队列并发送:
var p = await _bus.GetSendEndpoint(new Uri("sb://xxxxx.servicebus.windows.net/fabric-test"));
await p.Send(new TestMessage(Guid.NewGuid()));
而且一切都很好 - 然而。
当我查看 Azure 门户时,我可以看到已创建 3 个队列和 1 个主题:
- desktopmmd2jga_stateless1_bus_qypoyyypboqbzhk5bdkg665cyh(队列)
- desktopmmd2jga_webapi1_bus_qypoyyypboqbsitfbdkg665pdd(队列)
- 结构测试(队列)
- xxxxx.core.testmessage(话题)
虽然这一切都有效我想知道这是什么?
stateless1
是您的服务结构总线实例,即为该总线创建的临时队列。
webapi1
是你的web api 总线实例,用于发送到无状态服务,也是一个临时队列。
fabric-test
是您的接收端点的服务队列。
namespace.core.testmessage
是您的消息类型,由您的服务端点订阅。
这都是由 MassTransit 构建的,以支持您正在使用的消息结构。临时队列在 5 分钟后消失,不用担心 - 它们只是用于寻址和维护与 ASB 的连接。
如果 发布了 那种类型的消息,就会创建主题,以便您的服务端点接收它。如果您不想为特定服务端点的消息类型订阅主题,您可以在该端点的配置中指定 SubscribeMessageTopics = false
。`