Как 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 создаст темы по мере необходимости для каждого из типов сообщений. Аналогично, подписывающееся приложение будет создавать входную очередь по мере необходимости.

Я просто хотел бы убедиться, что мое понимание верно.

0 ответов

Другие вопросы по тегам