在上一篇的最后,编写了一个C#驱动RabbitMQ的简单栗子,了解了C#驱动RabbitMQ的基本用法。本章介绍RabbitMQ的四种
1 direct类型
1 direct路由规则

上一篇最后一个栗子使用的Exchange就是direct类型的,direct类型的exchange路由规则很简单:
exchange在和queue进行binding时会设置routingkey(为了避免和下边的routingKey混淆,很多时候把这里的routingKey叫做BindingKey)
channel.QueueBind(queue:"Q1", exchange:"myexchange", routingKey:"orange");
将消息发送到Broker时会设置对应的routingkey:
channel.BasicPublish(exchange: "myexchange",routingKey: "orange", basicProperties: null, body: body);
只有RoutingKey和BindingKey完全相同时,exchange才会把消息路由到绑定的queue中去。寻ios马甲包技术大大 重新 长期合作QQ51286559
2 代码示例
我们知道了direact类型的交换机只有routingKey和bindingKey相同的时候才会进行消息路由,根据这一特点我们可以通过routingKey将消息路由到不同的queue中。如在进行日志处理时,需求是所有的日志都保存到文本文件,出现错误日志时则还需要短信通知以便及时处理。我们可以创建两个队列:只接收错误日志的log_error队列和接收所有日志信息的log_all队列。消费者C1处理log_error队列中消息,将这些消息通过短信通知管理员,消费者C2处理log_all队列的信息,将这些信息记录到文本文件。

生产者用于发送日志消息,代码如下:
View Code
消费者C1用于处理log_error队列中的消息,错误消息进行短信通知,代码如下:
View Code</
RabbitMQ四种Exchange介绍及代码演示

本文介绍了RabbitMQ中的四种Exchange类型:direct、fanout、topic和header。direct类型的Exchange基于完全匹配的routingKey进行消息路由;fanout类型则将消息广播到所有绑定的队列;topic类型允许使用通配符进行路由规则匹配;header类型不依赖routingKey,而是基于headers进行消息路由。文中通过代码示例详细展示了每种类型的Exchange如何工作。
最低0.47元/天 解锁文章
559

被折叠的 条评论
为什么被折叠?



