rabbitMQ的三种路由模式
rabbitMQ工作流程:
1、声明交换机
2、声明消息队列
3、绑定交换机和队列
4、生产者往交换机里发送新消息
5、交换机根据所选的模式和routingKey决定消息发往哪条消息队列
6、一个消费者只能消费一条消息队列
(如果重复声明,类型参数不变不会报错。 如果第二次声明和第一次类型参数有变化,会报异常)
上代码:
var factory = new ConnectionFactory();
factory.UserName = "guest";
factory.Password = "guest";
factory.HostName = "127.0.0.1"; //设置RabbitMQ服务器所在的IP或主机名
var connection = factory.CreateConnection(); using (IModel channel = connection.CreateModel())
{
//声明一个交换机
channel.ExchangeDeclare(exchange: "exchange1",
type: ExchangeType.Topic,
durable: true,
autoDelete: false,
arguments: null); //声明三个消息队列
channel.QueueDeclare(
queue: "q1",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null); channel.QueueDeclare(
queue: "q2",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null); channel.QueueDeclare(
queue: "q3",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null); //用不同的routingKey绑定队列与交换机
channel.QueueBind(queue: "q1",
exchange: "exchange1",
routingKey: "person.name.*",
arguments: null); channel.QueueBind(queue: "q2",
exchange: "exchange1",
routingKey: "person.age.*",
arguments: null); channel.QueueBind(queue: "q3",
exchange: "exchange1",
routingKey: "person.#",
arguments: null); //往交换机中发出一条消息
channel.BasicPublish(
exchange: "exchange1",
routingKey: "person.name.jerry",
basicProperties: null,
body: Encoding.UTF8.GetBytes(msg));
三种常用路由模式:
1、Direct
这种模式下,交换机根据routingKey进行完全匹配。如果匹配失败则丢弃消息。
例如:绑定的交换机routingKey是"person.name",而使用BasicPublish()方法往交换机发消息时用的"person.name"则匹配成功,将根据交换机名称和routingKey找到绑定的消息队列,并发送新消息。
2、Fanout
这种模式会完全忽略routingKey。
只要往交换机1中发送消息,则会广播到与交换机1绑定的所有消息队列。
3、Topic
这种模式下可以对routingKey进行模糊匹配,如果匹配失败则丢弃消息,如果匹配多个结果,则往多个结果都发送消息。
类似于正则表达式, 它有两种语法:“*”,"#"
"*"只匹配当前级别的词,如"person.*"可以匹配"person.name",无法匹配"person.name.jerry"。无法匹配空,如"person"。
"#"能匹配多个子级别的词,如"person.#"可以匹配"person.name",也可以匹配"person.name.jerry"。可以匹配空,如"person"。
rabbitMQ的三种路由模式的更多相关文章
- 【RabbitMQ】三种Exchange模式——订阅、路由、通配符模式
https://blog.csdn.net/ww130929/article/details/72842234
- 8、RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较
RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较 RabbitMQ中,除了Simple Queue和Work Queue之外的所有生产者提交的消息都由Exc ...
- 【转】RabbitMQ三种Exchange模式
[转]RabbitMQ三种Exchange模式 RabbitMQ中,所有生产者提交的消息都由Exchange来接受,然后Exchange按照特定的策略转发到Queue进行存储 RabbitMQ提供了四 ...
- 虚拟机安装Ubuntu三种网络模式
VMWare提供三种工作模式桥接(bridge).NAT(网络地址转换)和host-only(主机模式). NAT(网络地址转换) 在NAT模式下,虚拟系统需要借助NAT(网络地址转换)功能,通过宿主 ...
- VMWare提供了三种工作模式上网
VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...
- vmware虚拟机三种网络模式详解_转
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 由于L ...
- VMWare虚拟机网络的三种工作模式
VMWare提供了三种工作模式: 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器.在桥接模式下,需要手工为虚拟系 ...
- Vmware虚拟机三种网络模式详解
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...
- Nacos系列:Nacos的三种部署模式
三种部署模式 Nacos支持三种部署模式 1.单机模式:可用于测试和单机使用,生产环境切忌使用单机模式(满足不了高可用) 2.集群模式:可用于生产环境,确保高可用 3.多集群模式:可用于多数据中心场景 ...
随机推荐
- Linux学习之路-2017/12/25
三章 命令通配符 .PATH变量 支持多种文本的通配符 通配符 含义 * 匹配零个或多个字符 ? 匹配任意单个字符 [0-9] 匹配范围内的数字 [ ...
- oracle PL/SQL调用Java生成Excel
现在有个需求, 要求编写oracle存储过程生成Excel文件到指定目录, 但是oracle自己的API貌似不太给力, 所以只能通过另一种更强大的语言来实现了 ——Java.有一个Java框架 ...
- Js 运算符(加减乘除)
1.加法 + +NaN //NaN,有一个为NaN就为NaN var box=Infinity+Infinity //Infinity var box=-Infinity + -Infinity // ...
- 关于strip(切割)和 split(分开) 的区别
plit(), 以括号里的东西为标准,把字符串分开成一个列表 strip(), "删除",括号里出现的东西,从两头开始往中间删除,直到遇到阻碍.中间就算有,也不会受影响 s10 = ...
- multi_index_container
转自:https://blog.csdn.net/buptman1/article/details/38657807 multi_index_container: Boost Multi-index ...
- 纯css3云彩动画效果
效果描述: 纯CSS3实现的云彩动画飘动效果 非常逼真实用 使用方法: 1.将body中的代码部分拷贝到你的页面中 2.引入对应的CSS文件即可
- 4-3 R语言函数 mapply
#mapply(函数/函数名,数据,函数相关的函数) > list(rep(1,4),rep(2,3),rep(3,2),rep(4,1)) [[1]] [1] 1 1 1 1 [[2]] [1 ...
- 第五周:MySQL数据库
首先,先了解一下数据库的基本概念要点: 数据库是数据存储的集合,表示数据结构化的信息 列存储表中的信息 行存储表的明细 主键是表中的唯一标识 主键不具备业务意义 在实际操作中,对表的主键不做强制性要求 ...
- P3558 [POI2013]BAJ-Bytecomputer
题目描述 A sequence of integers is given. The bytecomputer is a device that allows the following operati ...
- sed 以及 awk用法
sed 格式 sed[options] "script" FILE.... 选项: -n:静默模式,不输出模式空间内的内容:默认打印空间模式的内容 -r:扩展的正则表达式 -f 文 ...