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 模式

远程调用,请求/响应模式。客户端发出消息后,同步等待直到获取服务端响应的内容后才返回。工作流程大致如下:

  1. 客户端启动时,创建一个匿名的排他 回调队列,服务端响应的信息将投递到该队列

  2. 客户端发送rpc请求时,设置 reply_tocorrelation_idreply_to 用于指定回调队列,correlation_id 用于识别回调队列中的消息对应的是哪一个请求(确定请求源)

  3. 客户端发送请求到 rpc_queue 队列

  4. 当消息进入队列时,server消费消息,将响应信息投递到 reply_to 队列

  5. 客户端监听 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 (一)基础概念相关推荐

  1. RabbitMQ基础概念详细介绍

    转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼. ...

  2. RabbitMQ基础概念详解

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. RabbitMQ简介 AMQP,即Ad ...

  3. RabbitMQ学习总结(一)——基础概念详细介绍

    2019独角兽企业重金招聘Python工程师标准>>> 一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相 ...

  4. java B2B2C Springcloud电子商务平台源码-RabbitMQ基础概念...

    RabbitMQ是一个由erlang开发的AMQP的开源实现. 需要JAVA Spring Cloud大型企业分布式微服务云构建的B2B2C电子商务平台源码 一零三八七七四六二六 AMQP,即Adva ...

  5. (2)RabbitMQ基础概念及工作流程详解

    上一节中我们对MQ做了一个概要介绍,这一节开始我们选取RabbitMQ开始进行学习,本节将会RabbitMQ做个简单介绍,并且会对其常见的基础概念做个讲解,最后会简单介绍一下RabbitMQ的工作流程 ...

  6. RabbitMQ学习总结(1)——基础概念详细介绍

    一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...

  7. 通过实例理解 RabbitMQ 的基本概念

    先说下自己开发的实例. 最近在使用 Spring Cloud Config 做分布式配置中心(基于 SVN/Git),当所有服务启动后,SVN/Git 中的配置文件更改后,客户端服务读取的还是旧的配置 ...

  8. ELKElasticSearch5.1基础概念及配置文件详解【转】

    1. 配置文件 elasticsearch/elasticsearch.yml 主配置文件 elasticsearch/jvm.options jvm参数配置文件 elasticsearch/log4 ...

  9. 商城项目01 _电商系统基本模式、分布式基础概念、微服务架构图、微服务划分图

    文章目录 ①. 电商系统基本模式 ②. 分布式基础概念 ③. 微服务架构图详解 ④. 微服务划分图 ①. 电商系统基本模式 ①. B2C模式 就是我们经常看到的供应商直接把商品卖给用户,即" ...

  10. TCP/IP基础概念及通信过程举例

    TCP/IP基础概念及通信过程举例 出现 上个世纪60年代,由于中央集中式网络的容灾性较弱,以美国国防部为中心的一家组织研究出分组交换网络.后来为了验证分组交换技术的实用性,ARPANET出现了,并且 ...

最新文章

  1. 沉痛哀悼!现代无线网络之父 Norman Abramson 辞世,享年 88 岁
  2. 智能车竞赛接入工程训练竞赛相关事项-建议稿件
  3. git查看stash内容
  4. 做业务与技术之间的桥梁
  5. Linux下的虚拟Bridge实现
  6. Windows平台下tomcat+java的web程序持续占cpu问题调试
  7. 定时备份为Sharepoint做网站备份,并删除指定日期的备份
  8. 在3D场景中显示汉字
  9. 如何修改wampserver中mysql中字符编码的解决方案
  10. 【实用工具】windows/linux下时间统计函数
  11. arcsde 10.2 for oracle 安装,ArcSDE 10.2 for Oracle 12C安装注意事项
  12. Verilog 语法合集
  13. 国科大-刘莹-数据挖掘-第一次作业后总结-纯干货
  14. 如何区别测试计划和测试方案
  15. 2019黑马python吾爱_最新Python黑马头条推荐系统项目视频教程
  16. 小米商城网页制作(附源码)
  17. cpp简单实现一下RNN神经网络
  18. 注册页面提交验证-密保问题实现
  19. idea output 窗口悬浮
  20. 阿里工作9年,熬到技术总监的我,选择离职:想给还在努力的你提个醒……

热门文章

  1. Essential C++中文版 前言
  2. linux内核配置系统浅析(转)
  3. python mysql 转义方法
  4. Linux CPU信息
  5. 论流量平台(交易内容)生死劫——币看流量生意正在进入正循环
  6. 比特币现金矿工商议,为开发提供部分奖励
  7. 云栖科技评论 | 传统产业的数字化转型 破除“肌肉记忆” 拥抱变化与未知
  8. Session与request的使用
  9. 调用webservice 的时候没法输入参数
  10. 图文并茂的生产者消费者应用实例demo