我是 Rebus 和 Azure 服务总线的新手,想了解 Rebus 如何处理 Azure 服务总线主题和队列。
我已经成功地让 Rebus 与 ASB 合作,但我对幕后发生的事情感到有些困惑。
我有一个配置 Rebus 的 ASP.NET Core 应用程序,如下所示:
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"))
);
Run Code Online (Sandbox Code Playgroud)
我还有一个订阅消息的控制台应用程序,配置如下:
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...");
}
Run Code Online (Sandbox Code Playgroud)
当我查看 Azure 门户时,我看到为我的每个消息子类(我有两个)创建了一个主题,我看到创建了一个名为“订阅者”的队列。
据我推测,似乎我可以在 Azure 门户中配置一个服务总线,Rebus 将根据需要为每种消息类型创建主题。类似地,订阅应用程序将根据需要创建一个输入队列。
我只是想验证一下我的理解是否正确。
| 归档时间: |
|
| 查看次数: |
1642 次 |
| 最近记录: |