Как Rebus работает с темами Azure Service Bus?
Я новичок в Rebus и Azure Service Bus и хотел бы понять, как Rebus работает с темами и очередями Azure Service Bus.
Мне удалось успешно заставить Ребуса работать с ASB, но я немного озадачен тем, что происходит под одеялом.
У меня есть приложение ASP.NET Core, которое настраивает Rebus следующим образом:
services.AddRebus(configure => configure
.Logging(l => l.Serilog())
.Transport(t =>
{
switch (messagingConfig)
{
case MessagingConfig.RabbitMq:
t.UseRabbitMqAsOneWayClient(messagingConnectionString);
break;
case MessagingConfig.AzureServiceBus:
t.UseAzureServiceBusAsOneWayClient(messagingConnectionString);
break;
default:
throw new ArgumentOutOfRangeException();
}
})
.Routing(r => r.TypeBased().Map<BaseMessage>("publisher"))
);
У меня также есть консольное приложение, которое подписывается на сообщения, настроенные следующим образом:
using (var activator = new BuiltinHandlerActivator())
{
activator.Register(() => new Handler());
Configure.With(activator)
.Logging(l => l.ColoredConsole(minLevel: LogLevel.Warn))
.Transport(t =>
{
switch (BusConfig)
{
case MessagingConfig.RabbitMq:
t.UseRabbitMq(RabbitMqConnectionString, "consumer");
break;
case MessagingConfig.AzureServiceBus:
t.UseAzureServiceBus(AzureServiceBusConnectionString, "subscriber");
break;
}
})
.Start();
Console.WriteLine($"Listening for messages on {BusConfig}...");
Console.WriteLine("Press ENTER to quit");
activator.Bus.Subscribe<AdditionalSessionRequestMessage>().Wait();
activator.Bus.Subscribe<AcceptInvoiceMessage>().Wait();
Console.ReadLine();
Console.WriteLine("Quitting...");
}
Когда я заглядываю в портал Azure, я вижу тему, созданную для каждого из моих подклассов сообщений (у меня их два), и вижу созданную очередь, называемую "подписчик".
Из того, что я могу предположить, может показаться, что я могу просто настроить служебную шину в портале Azure, и Rebus создаст темы по мере необходимости для каждого из типов сообщений. Аналогично, подписывающееся приложение будет создавать входную очередь по мере необходимости.
Я просто хотел бы убедиться, что мое понимание верно.