RabbitMQ direct类型的Exchange
就目前来说,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的更多相关文章
- RabbitMQ fanout类型的Exchange
就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中. 本篇文章介绍的fanout类型就是指定将消息群发到与Exchange绑定的所有队列中. fanout这个 ...
- RabbitMQ学习总结 第六篇:Topic类型的exchange
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- Rabbitmq -- direct
一.前言 RabbitMQ还支持根据关键字发送,即:队列绑定关键字,发送者将数据根据关键字发送到消息exchange.direct类型的Exchange路由规则也很简单,它会把消息路由到那些bindi ...
- 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示
在上一篇的最后,编写了一个C#驱动RabbitMQ的简单栗子,了解了C#驱动RabbitMQ的基本用法.本章介绍RabbitMQ的四种Exchange及各种Exchange的使用场景. 1 direc ...
- RabbitMQ入门学习系列(五) Exchange的Direct类型
快速阅读 利用Exchange的Direct类型,实现对队列的过滤,消费者启动以后,输入相应的key值,攻取该key值对应的在队列中的消息 . 从一节知道Exchange有四种类型 Direct,To ...
- 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...
- RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange
1.topic类型的Exchange 我们之前说过Topic类型的Exchange是direct类型的模糊查询模式,可以通过routkey来实现模糊消费message,topic的模糊匹配有两种模式: ...
- RabbitMQ路由类型
关于RabbitMQ的Exchange类型 参考地址:<RabbitMQ学习系列(四): 几种Exchange 模式> github地址:https://github.com/ChenWe ...
- RabbitMQ的四种ExChange
在message到达Exchange后,Exchange会根据route规则进入对应的Queue中,message可能进入一个Queue也可能进入对应多个Queue,至于进入哪个Queue或者是说哪个 ...
随机推荐
- (7)Pool进程池
(1)# 开启过多的进程并不一定提高你的效率 因为进程池可以实现并行的概念,比Process单核并发的速度要快 # 如果cpu负载任务过多,平均单个任务执行的效率就会低,反而降低执行速度. 1个人做4 ...
- English trip V1 - 10.Family Ties 家庭关系 Teacher:Emily Key: Possessive s (所有格 s)
In this lesson you will learn to talk about people in a family. 课上内容(Lesson) What are you Spring Fes ...
- C#如何实现类似QQ那样靠边隐藏的功能
http://www.cnblogs.com/yechensi/archive/2009/08/02/1537145.html C#如何实现类似QQ那样靠边隐藏的功能 你想过为自己的程序添加靠边隐藏的 ...
- .Net调用QQ邮箱发送邮件
话说网上发送邮件的代码很多,但是我由于不细心,导致拿别人的代码发送邮件老是失败,今天就说说几个要注意的地方吧!!! public bool SendEmail() { MailMessage msg ...
- linux权限管理之进程掩码
进程掩码 mask umask ======================================================== 文件权限管理之: 进程umask进程 新建文件.目录的 ...
- 10 Node Frameworks to Use in 2019
原文 https://scotch.io/bar-talk/10-node-frameworks-to-use-in-2019 node Framworks列表: http://nodeframewo ...
- 多线程总结2之volatile和synchronized(转)
本文转自 http://www.jasongj.com/java/thread_safe/ 一.多线程编程中的三个核心概念 本篇文章将从这三个问题出发,结合实例详解volatile如何保证可见性及一定 ...
- 【其他】【PL/SQL Developer】【1】解决PL/SQL Developer过期的情况
正文: 1,开始菜单,搜索regedit,回车打开(即日常搜索电脑安装的软件的地方,regedit就是注册表) 2,按HKEY_CURRENT_USER\Software\Allround Autom ...
- reflow 和 repaint
Reflow(渲染):对于DOM结构中的各个元素都有自己的盒模型,浏览器根据各种样式(浏览器的.开发人员定义的等)来计算,并根据计算结果将元素放到它该出现的位置,这个过程称之为reflow. refl ...
- python-day73--django-用户验证
一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1 .authenticate() ...