RabbitMQ fanout类型的Exchange
就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中。
本篇文章介绍的fanout类型就是指定将消息群发到与Exchange绑定的所有队列中。
fanout这个单词,我看好多都翻译为扇出。扇出是个什么鬼?不知火舞拿个扇子出去秀身材?....还是回归正题!
反正知道fanout是在RabbitMQ中是群发的意思就OK了。
说到群发,肯定首先是要有一群队列Queue,其次还要有一个Exchange才行!那么,来吧,翠花,上代码!!!我们在代码中详见!
//首先创建一个连接工厂对象
var factory = new ConnectionFactory() { HostName = "localhost", UserName = "yyt", Password = "yyt888888",VirtualHost="log" };
//然后使用工厂对象创建一个TCP连接
using (var connection = factory.CreateConnection()){
//在当前连接上创建一根通信的虚拟管道
using (var channel = connection.CreateModel()) {
//声明一个fanout类型的交换机
channel.ExchangeDeclare("e.products", //交换机名称
"fanout"); //交换机类型
//声明一群队列
channel.QueueDeclare(queue: "q.eggs",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null); channel.QueueDeclare(queue: "q.bread",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null); channel.QueueDeclare(queue: "q.milk",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null); channel.QueueBind("q.eggs", "e.products", "eggs");
channel.QueueBind("q.bread", "e.products", "bread");
channel.QueueBind("q.milk", "e.products", "milk"); var body = Encoding.UTF8.GetBytes("开饭啦!"); channel.BasicPublish(exchange: "e.products", //指定交换机
routingKey: "eggs", //如果交换机类型为fanout,则不指定routingKey,指定了也无效,因为是群发
basicProperties: null,
body: body);
}
}
运行程序后,我们到RabbitMQ的web管理界面去看看。
在浏览器地址栏中输入:localhost:15672
输入用户名和密码进入后,在Exchange栏可以看到如下画面:

可以看见成功创建了一个fanout类型的名为e.products的交换机Exchange。点击去看看!

可以看见该交换机绑定了三个队列。
接下来点开Queue标签看看:

可以看见成功创建了三个队列,每个队列中都有一条消息。因为我们只发送了一次,而且是群发,因此三个队列中都有一条相同的消息。
让我们分别点开每个队列看看,他们的消息是否相同。
q.bread队列:

q.eggs队列:

q.milk队列:

这三个队列的内容一模一样!这就是fanout类型交换机的群发功能。
记住:fanout类型的交换机在发送消息的时候,RoutingKey可以不用指定,因为指定了也无效,该交换机会向绑定的所有队列中发送数据!
最后让我们喊出我们的口号:捉住那只兔子,炖了它!
RabbitMQ fanout类型的Exchange的更多相关文章
- 10.RabbitMQ Fanout类型交换机
Fanout类型交换机忽略Routing Key,它将消息传递到所有与它绑定的队列上. Producer.java package com.test.fanout; import co ...
- RabbitMQ direct类型的Exchange
就目前来说,Exchange是与消息发送端有关的,因为它可以指定将消息发送到哪个或哪些队列中. 本篇文章介绍的direct类型就是指定将消息定向发送到哪个队列中. direct,顾名思义,就是直接的意 ...
- RabbitMQ与.net core(三) fanout类型Exchange 与 消息的过期时间 与 队列的存活时间
上一篇我们讲了关于direct类型的Exchange,这一片我们来了解一下fanout类型的Exchange. 1.Exchange的fanout类型 fanout类型的Exchange的特点是会把消 ...
- RabbitMQ Exchange中的fanout类型
fanout 多播 在之前都是使用direct直连类型的交换机,通过routingkey来决定把消息推到哪个queue中. 而fanout则是把拿到消息推到与之绑定的所有queue中. 分析业务,怎样 ...
- RabbitMQ学习总结 第六篇:Topic类型的exchange
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- 快速掌握RabbitMQ(二)——四种Exchange介绍及代码演示
在上一篇的最后,编写了一个C#驱动RabbitMQ的简单栗子,了解了C#驱动RabbitMQ的基本用法.本章介绍RabbitMQ的四种Exchange及各种Exchange的使用场景. 1 direc ...
- RabbitMQ简单实现,exchange四种模式,持久化
RabbitMQ目录 一.简介,简单实现二.Exchange四种类型简单介绍三.消息确认,交换机.队列及消息持久化一.简介及简单实现RabbitMQ是一个消息代理:它接受并转发消息.你可以把它当成一个 ...
- 如何从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的模糊匹配有两种模式: ...
随机推荐
- Python pymysql 增删改查封装
关于pymysql 的增删改查,简单做个封装,方便后面使用直接拿来调用即可. 其中 增删改 的处理其实是一致的,本可以使用统一的方法,但是为了明显区分,这里分开来写了. 直接看代码就即可,如下: # ...
- vue2.0 axios交互
vue使用axios交互时候会出现的问题大致有三个: 1:本地调试跨域问题? 2:post请求,传参不成功,导致请求失败? 3:axios引用,在使用的组件里面引用 解决方案: 问题一:跨域? 解决本 ...
- windows10 64bit 下的tensorflow 安装及demo
目前流行的深度学习库有Caffe,Keras,Theano,本文采用谷歌开源的曾用来制作AlphaGo的深度学习系统Tensorflow. 1:安装Tensorflow 最早TensorFlow只支持 ...
- 框架设计——View
[demo]: ZZSZYFP : UserControl, INavigateMdiControl(1)继承自UserControl,并实现了 INavigateMdiControl接口(2)限制表 ...
- ajax代码整理
$.ajax({ type: "post", [以POST或GET的方式请求.默认GET.PUT和DELETE也可以用,有的浏览器不支持] url: url, [请求的目的地址,须 ...
- ATOM常用插件推荐
转载:http://blog.csdn.net/qq_30100043/article/details/53558381 ATOM常用插件推荐 simplified-chinese-menu ATOM ...
- vs 2017 Integrated Security 为sspi 含义
关于sql连接语句中的Integrated Security=SSPI解决方法:即:Security Support Provider Interface设置Integrated Security为 ...
- 杂记-格式化Date默认格式,日期加一天,jstl判断字符类型,ajax模拟from表单后台跳转页面,jstl访问数据库并在页面显示
1.格式化Date默认格式 String str="Sun Oct 08 22:36:45 CST 2017"; SimpleDateFormat sdf = new Simple ...
- ajax请求二进制流图片并渲染到html中img标签
日常显示图片都诸如这种形式:直接使用img的src属性 <img src="图片路径.地址" alt="" /> 以上方法无法在获取图片请求中设置请 ...
- Python----list&元祖常用方法总结
一.创建列表,把使用逗号分隔的数据用中括号[ ]括起来即为一个列表,列表也叫数组.list.array:列表里面也可以再套列表,一个列表里面套一个列表,叫二维数组:一个里面套一个列表,里面的列表再套 ...