跳至主内容

RabbitMQ 教程 - 路由

路由

(使用 AMQP 1.0 .NET 客户端)

信息

先决条件

本教程假设 RabbitMQ 已 安装 并在 localhost 上的 标准端口 (5672) 上运行。如果您使用不同的主机、端口或凭据,则需要调整连接设置。

哪里寻求帮助

如果您在学习本教程时遇到困难,可以通过 GitHub DiscussionsRabbitMQ 社区 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,了解如何通过主题交换机实现基于模式的路由。

© . This site is unofficial and not affiliated with VMware.