就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中。

本篇文章介绍的direct类型就是指定将消息定向发送到哪个队列中。

direct,顾名思义,就是直接的意思。那我就直接开始上代码了!

//首先创建一个连接工厂对象
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "yyt", Password = "yyt888888",VirtualHost="log" };
//然后使用工厂对象创建一个TCP连接
using (var connection = factory.CreateConnection()){
//在当前连接上创建一根通信的虚拟管道
using (var channel = connection.CreateModel()) {
//声明一个交换机
channel.ExchangeDeclare("e.log", //交换机名称
     "direct"); //交换机类型
//声明一个队列
channel.QueueDeclare(queue: "q.log.info", //队列名称
durable: false, //当前队列是否持久化
exclusive: false, //是否是私有队列
autoDelete: false, //该队列在最后一个consumer断开之后是否自动删除
arguments: null); //其他配置参数
//将该队列绑定到交换机,并设置RoutingKey=log.info,以便交换机能通过RoutingKey找到该队列
channel.QueueBind("q.log.info", //队列名称
"e.log", //交换机名称
"log.info"); //自定义的RoutingKey //生成二进制消息
var body = Encoding.UTF8.GetBytes("hello world!");
//将二进制消息通过交换机发送到队列中
channel.BasicPublish(exchange: "e.log", //交换机
routingKey: "log.info", //RoutingKey
basicProperties: null, //先让它为空
body: body); //发送的消息(二进制数据) }
}

运行程序后,我们到RabbitMQ的web管理界面去看看。

在浏览器地址栏中输入:localhost:15672

输入用户名和密码进入后,在Exchange栏可以看到如下画面:

证明创建了一个direct类型的交换机(e.log),点进去看看。

可以看到该交换机绑定了名为q.log.info的队列,并生成了一个名为log.info的RoutingKey。以后该交换机就可以通过log.info找到队列q.log.info,并把消息储存在该队列中。

接下来我们点开Queue标签看看。

可以看到有一个名为q.log.info的队列,里面存了一个消息。

点击这个队列名称,让我们来看看消息的内容是什么?

点击那个'Get Message(s)'按钮。看到么,Payload的内容就是我们发送的消息。

操作演示成功!

最后让我们喊出我们的口号:捉住那只兔子,炖了它!

RabbitMQ direct类型的Exchange的更多相关文章

  1. RabbitMQ fanout类型的Exchange

    就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中. 本篇文章介绍的fanout类型就是指定将消息群发到与Exchange绑定的所有队列中. fanout这个 ...

  2. RabbitMQ学习总结 第六篇:Topic类型的exchange

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

  3. Rabbitmq -- direct

    一.前言 RabbitMQ还支持根据关键字发送,即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange.direct类型的Exchange路由规则也很简单,它会把消息路由到那些bindi ...

  4. 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示

    在上一篇的最后,编写了一个C#驱动RabbitMQ的简单栗子,了解了C#驱动RabbitMQ的基本用法.本章介绍RabbitMQ的四种Exchange及各种Exchange的使用场景. 1 direc ...

  5. RabbitMQ入门学习系列(五) Exchange的Direct类型

    快速阅读 利用Exchange的Direct类型,实现对队列的过滤,消费者启动以后,输入相应的key值,攻取该key值对应的在队列中的消息 . 从一节知道Exchange有四种类型 Direct,To ...

  6. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  7. RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    1.topic类型的Exchange 我们之前说过Topic类型的Exchange是direct类型的模糊查询模式,可以通过routkey来实现模糊消费message,topic的模糊匹配有两种模式: ...

  8. RabbitMQ路由类型

    关于RabbitMQ的Exchange类型 参考地址:<RabbitMQ学习系列(四): 几种Exchange 模式> github地址:https://github.com/ChenWe ...

  9. RabbitMQ的四种ExChange

    在message到达Exchange后,Exchange会根据route规则进入对应的Queue中,message可能进入一个Queue也可能进入对应多个Queue,至于进入哪个Queue或者是说哪个 ...

随机推荐

  1. html+css+js实现类似音乐app似的列表播放

    最近做了一个类似于音乐app里面列表播放的功能,主要是音频播放和按钮状态的联动: 界面如下: 如上图所示 上面有一个播放按钮 下面有一个播放列表 上面还有一个歌曲长度的总时长 上面一个按钮能控制下面所 ...

  2. Asp.net core 学习笔记 ( ef core )

    更新 : 2018-11-26 这里记入一下关于 foreignKey cascade action 默认情况下如果我们使用 data annotation required + foreginkey ...

  3. python实现邮件接口——smtplib模块

    1. 思路 使用脚本发送邮件的思路其实和客户端发送邮件一样,过程都是: 登录 —> 写邮件 —> 发送 只不过通过脚本发送时我们需要考虑到整个过程的方方面面.以下为思路导图: 2. Pyt ...

  4. 使用spss做方差分析

    还记得上学那会老师专门敲了黑板,强调方差分析很重要..单因素方差分析(Analysis of Variance, ANOVA),如果变量多,就是多因素方差分析,还需要考虑到多重共线性, 也就是线性代数 ...

  5. pandas删除行删除列,增加行增加列

    创建df: >>> df = pd.DataFrame(np.arange(16).reshape(4, 4), columns=list('ABCD'), index=list(' ...

  6. Python全栈开发,Day2(in,while else,格式化输出,逻辑运算符,int与bool转换,编码)

    一.in的使用 in 操作符用于判断关键字是否存在于变量中 ? 1 2 a = '男孩wusir' print('男孩' in a) 执行输出: True in是整体匹配,不会拆分匹配. ? 1 2 ...

  7. android -------- Data Binding的使用 ( 六) 自定义属性

    今天来说说DataBinding在自定义属性的使用 默认的android命名空间下,我们会发现并不是所有的属性都能直接通过data binding进行设置,比如margin,padding,还有自定义 ...

  8. android -------- 颜色的半透明效果配置

    最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有:  RGB    ARGB    RRGGBB   AA ...

  9. Stark组件 (一)

    Stark组件构建 1.启动所有app下的stark.py文件,的配置实现步骤 1.创建一个Django项目crm,并创建  app1 ,app2, stark 三个app 2.在crm 项目的set ...

  10. Non-UTF-8 code starting with '\xbb' in file

    一.错误问题 错误问题:Non-UTF-8 code starting with '\xbb' in file,如图所示: 二.分析问题 原因:程序文件夹中出现中文,运行的时候出现如下错误,导致出错的 ...