RabbitMQ (一)基础概念
1 使用场景
系统解耦
异步
削峰
2 核心概念
vhost:虚拟主机
broker::消息服务进程,包含 exchange 和 queue
exchange: 交换器。负责根据路由规则转发消息
queue:消息队列。存储消息的地方,请求“缓冲区”,实现削峰
producer:消息生产者,发送消息到 交换器
consumer:消息消费者,从消息队列获取消息并消费
routingKey:路由标识,producer发送消息时指定,用于匹配queue
bindingKey:消息队列与交换器绑定时指定的key,用于与消息的routingKey比对
3 exchange交换器类型
1 direct:当消息的routingKey与队列绑定exchange指定的bindingKey 完全一致时,exchange将消息存储到对应的queue
2 fanout:发布订阅,交换器将消息转发到所有与之绑定的queue上,此时消息生产者不能决定消息发往哪里,完全由交换器决定
3 topic:通配符匹配。通配符有 *
、#
两个
*
:匹配一个字符,比如 a.* 匹配 a.bingo ,不匹配 a.b.bingo
#
: 匹配多个字符,比如 a.# 匹配 a.xx.yy
4 headers:该类型交换器的路由规则使用消息头部携带的键值来匹配,而不使用routingKey
1 交换器与消息队列绑定时,指定键值对信息
2 生产者发送消息时,指定消息的头部信息
headers交换器的匹配模式有 whereAll(全部匹配)
、whereAny(部分匹配)
两种模式
4 工作模式
1 Hello World 模式
点对点模式,一个队列只有一个消费者
2 Work queue 模式
工作队列模式,一个队列由多个消费者并行进行消费。默认情况下rabbitMQ使用 Round-robin
的方式分发消息给消费者。
3 Publish/Subscribe 模式
发布订阅模式,通常使用 fanout 类型的交换器实现,消息转发到与交换器绑定的所有消息队列上。
4 routing 模式
精确匹配路由模式。当routingKey(发送消息时指定的key)与bindingKey(队列绑定交换器时指定的key)完全匹配时,交换器将消息投递到对应的队列。
1 如上图所示,一个队列可多次绑定同一个交换器,并指定不同的 bindingKey
2 多个队列绑定同一个交换器时可指定相同的bindingKey,此时工作模式与发布订阅类似,如下图所示
5 Topic 模式
通配符匹配模式。
6 Rpc 模式
远程调用,请求/响应模式。客户端发出消息后,同步等待直到获取服务端响应的内容后才返回。工作流程大致如下:
客户端启动时,创建一个匿名的排他 回调队列,服务端响应的信息将投递到该队列
客户端发送rpc请求时,设置
reply_to
和correlation_id
,reply_to
用于指定回调队列,correlation_id
用于识别回调队列中的消息对应的是哪一个请求(确定请求源)客户端发送请求到
rpc_queue
队列当消息进入队列时,server消费消息,将响应信息投递到
reply_to
队列客户端监听
reply_to
队列,当有消息到达时,通过correlation_id
确定是否是自己请求的结果,如果是则获取信息并返回。
5 如何保证可靠性
1 发送方 publish comfirm 机制。
保证消息从producer到exchange
2 持久化及镜像部署
交换机持久化、队列持久化、消息持久化,保证rabbitMQ服务宕机时,相关的信息不丢失,服务重新上线后能恢复。
镜像部署保证rabbitMQ的高可用。
3 消费方 Ack 机制
确保消息消费成功。
参考博文:
https://www.rabbitmq.com/getstarted.html
https://juejin.cn/post/6978472783252717582
https://juejin.cn/post/6854573219253485575#heading-14
https://juejin.cn/post/6854573219253485575
RabbitMQ (一)基础概念相关推荐
- RabbitMQ基础概念详细介绍
转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼. ...
- RabbitMQ基础概念详解
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. RabbitMQ简介 AMQP,即Ad ...
- RabbitMQ学习总结(一)——基础概念详细介绍
2019独角兽企业重金招聘Python工程师标准>>> 一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相 ...
- java B2B2C Springcloud电子商务平台源码-RabbitMQ基础概念...
RabbitMQ是一个由erlang开发的AMQP的开源实现. 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 AMQP,即Adva ...
- (2)RabbitMQ基础概念及工作流程详解
上一节中我们对MQ做了一个概要介绍,这一节开始我们选取RabbitMQ开始进行学习,本节将会RabbitMQ做个简单介绍,并且会对其常见的基础概念做个讲解,最后会简单介绍一下RabbitMQ的工作流程 ...
- RabbitMQ学习总结(1)——基础概念详细介绍
一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...
- 通过实例理解 RabbitMQ 的基本概念
先说下自己开发的实例. 最近在使用 Spring Cloud Config 做分布式配置中心(基于 SVN/Git),当所有服务启动后,SVN/Git 中的配置文件更改后,客户端服务读取的还是旧的配置 ...
- ELKElasticSearch5.1基础概念及配置文件详解【转】
1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...
- 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图
文章目录 ①. 电商系统基本模式 ②. 分布式基础概念 ③. 微服务架构图详解 ④. 微服务划分图 ①. 电商系统基本模式 ①. B2C模式 就是我们经常看到的供应商直接把商品卖给用户,即" ...
- TCP/IP基础概念及通信过程举例
TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...
最新文章
- 沉痛哀悼!现代无线网络之父 Norman Abramson 辞世,享年 88 岁
- 智能车竞赛接入工程训练竞赛相关事项-建议稿件
- git查看stash内容
- 做业务与技术之间的桥梁
- Linux下的虚拟Bridge实现
- Windows平台下tomcat+java的web程序持续占cpu问题调试
- 定时备份为Sharepoint做网站备份,并删除指定日期的备份
- 在3D场景中显示汉字
- 如何修改wampserver中mysql中字符编码的解决方案
- 【实用工具】windows/linux下时间统计函数
- arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
- Verilog 语法合集
- 国科大-刘莹-数据挖掘-第一次作业后总结-纯干货
- 如何区别测试计划和测试方案
- 2019黑马python吾爱_最新Python黑马头条推荐系统项目视频教程
- 小米商城网页制作(附源码)
- cpp简单实现一下RNN神经网络
- 注册页面提交验证-密保问题实现
- idea output 窗口悬浮
- 阿里工作9年,熬到技术总监的我,选择离职:想给还在努力的你提个醒……