RabbitMQ 教程 - 路由
路由
(使用 AMQP 1.0 .NET 客户端)
信息
先决条件
本教程假设 RabbitMQ 已 安装 并在 localhost 上的 标准端口 (5672) 上运行。如果您使用不同的主机、端口或凭据,则需要调整连接设置。
哪里寻求帮助
如果您在学习本教程时遇到困难,可以通过 GitHub Discussions 或 RabbitMQ 社区 Discord 联系我们。
在上一篇教程中,我们使用了 fanout(扇形)交换机。在此,我们将使用 direct(直连)交换机,以便消费者能够订阅消息的子集(例如按严重程度订阅)。
绑定
此示例使用 logs_direct 交换机。发布者在构建时会设置路由键。
IPublisher publisher = await connection.PublisherBuilder().Exchange(exchangeName).Key(severity).BuildAsync();
消费者会声明一个临时的排他队列,并根据命令行参数为每个严重程度进行一次绑定。
foreach (string severity in args)
{
IBindingSpecification binding = management.Binding()
.SourceExchange(exchangeSpec)
.DestinationQueue(queueName)
.Key(severity);
await binding.BindAsync();
}
处理程序可以从消息注解中读取有效的路由键(请参阅 ReceiveLogsDirect/Program.cs)。
运行
dotnet run --project ReceiveLogsDirect/ReceiveLogsDirect.csproj warning error
dotnet run --project EmitLogDirect/EmitLogDirect.csproj warning "Run. Run. Or it will explode."
源码
现在我们可以继续学习教程 5,了解如何通过主题交换机实现基于模式的路由。