RabbitMQ学习笔记 01、RabbitMQ基本认识与环境搭建(一)

简介: RabbitMQ学习笔记 01、RabbitMQ基本认识与环境搭建(一)

一、初识RabbitMQ


1.1、MQ的核心思想与基本介绍


核心思想:接收并转发消息,可以看做是邮局。 接收存储转发的是二进制消息叫做message。


MQ中有三个术语(思想):一般的话这三个角色不在一台机子上,通常在多个服务器上,一大好处解耦


producer:生产者或消息发送者,通常用P来表示。消息的来源,谁去发消息,谁就是生产者。

queue:相当于一个邮箱(可命名),有RabbitMQ来管理,消息发送给mq之后,由mq来进行管理,也就会保存在queue里面,这个队列可以是无限延长的。一个队列能够存储来自多个producer,同时也能够被多个消费者消费。

consumer:消费者,C表示,其会从queue中获取消息。

消息队列:MQ就是message queue。


三个作用:①允许入列。②存储消息。③把消息出列。


特性:①业务无关。只需要做好消息分发即可。②FIFO,具有队列性质。③容灾,也就是生产者传输过来的消息是能够进行持久化的。有能力在恢复服务之后将消息捞出来。保证可靠性。④性能,吞吐量大。


为什么要使用消息队列?


系统解耦。(实际上也很多的模块,如电商中的优惠券模块、订单模块等等)例如一些日志记录我们就可以放在消息队列中,由mq来进行统一分发出去!而不是让生产者来进行操作!

异步调用。(我先告诉你做这件事情,不等你做完就直接返回了;对于同步是告诉你做这个事等你做完我再返回)如下单操作等等,mq会根据你的消息来进行不同任务分发!

流量削峰:一段时间可能会出现流量高峰,mq会讲这些请求存放在自己的队列中,在以我们能够接收的速度发给我们。解决了突然高并发时机器不够造成的瘫痪,能够将高流量做一下缓冲,将压力化解。



1.2、mq的特点


1、开源、跨语言,能够支持java、python、rubby等开发。


2、底层使用Erlang语言编写的。(之前在交换机领域广泛应用,在通信里面是很受欢迎的),该语言性能特别好,在通信领域有很大优势。


3、应用广泛。很多大公司都会以mq来作为消息通信的组件,有些公司会在它身上进一步封装。


4、社区活跃、API丰富。


技术选型:根据速度延迟因素也会决定。



1.3、AMQP协议


Advanced Message Queuing Protocol:高级消息队列协议。专门面向消息中间件的一种开放式标准应用层协议,也可以理解为是一套规范。



Publisher、Consumer:生产者与消费者。

服务器(server)

虚拟主机:一个mq可以给很多的完全独立的用户提供服务,每一个服务可以使用虚拟主机划分,各个服务之间不会受到影响。

交换机:在虚拟主机中包含交换机。

消息队列:交换机下面会连通消息队列,它们是一个绑定的关系

连接关系:publisher把消息发送到server,接着找到virtual host,接着对应一个exchange,接着mq会正确的将消息投递到mq中。


作为我们的消费者与message queue绑定即可,消费者的话不需要管上面的内容。


优势:达到解耦!也就是说我们生产者不需要究竟投递到哪个队列中;而消费者只需要监听队列,不需要管消息是怎么投递的。这里的exchange与message queue它们会有绑定关系,绑定的时候通过roting key路由件进行绑定的,有了这个之后就可以知道通过什么规则把消息转到哪个队列上。


1.4、mq的核心概念


架构与名词介绍


MQ的架构:



Server:服务;mq必须要启动一个服务才能给我们消息接收与发送的能力。


Connection:与server进行连接,主要就是应用程序与服务端之间进行建立连接的。


Channel:一个connection中包含多个channel。信道的意思,几乎所有的操作都在信道上进行,客户端可以建立多个信道。后序我们的操作也是去操作的channel,比如说绑定队列都是在channel上进行的。


Message:消息,由properties和body组成的。第一部分properties对消息进行一些额外的修饰如包括消息的优先级,队列的延迟还有消息的其他属性包括自定义的属性都可以往properties中写。第二部分body就是消息的实体,相当于我们具体所传输的消息放在其中。


virtual host:虚拟主机(独立的单元),顶层隔离作用。同一个虚拟主机下,不能有重复的交换机和queue


Exchange:交换机,接收生产者的消息的,然后根据指定的路由器去把消息转发到所绑定的队列上。


binding:绑定交换机和队列。


绑定关系中包含一个routing key:路由键,路由规则,虚拟机可以用它来确定这个消息如何进行一个路由。

queue:队列,消费者只需要监听队列来消费消息,不需要关注消息来自于哪个Exchange。


Exchange与Message Queue存在着绑定的关系,一个Exchage可以绑定多个消息队列。


消息流转过程



相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 存储 NoSQL
RibbitMQ学习笔记之 RabbitMQ 其他知识点扩展
RibbitMQ学习笔记之 RabbitMQ 其他知识点扩展
199 1
|
消息中间件 存储 安全
RabbitMQ学习笔记(一)----RabbitMQ的基本概念以及5种队列模式
今天开始学习消息中间件,根据项目需求,目前选择的消息中间件是RabbitMQ。让我们一起来认识下RabbitMQ吧。
510 0
RabbitMQ学习笔记(一)----RabbitMQ的基本概念以及5种队列模式
|
消息中间件 网络协议 数据中心
RabbmitMQ学习笔记-RabbitMQ集群架构模式
RabbmitMQ学习笔记-RabbitMQ集群架构模式
409 0
|
消息中间件 Java
RabbmitMQ学习笔记-RabbitMQ与SpringBoot2.0整合实战
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。
328 0
|
消息中间件 容灾
RibbitMQ学习笔记之RabbitMQ 集群(二)
RibbitMQ学习笔记之RabbitMQ 集群
239 0
|
消息中间件 缓存 负载均衡
RibbitMQ学习笔记之RabbitMQ 集群(一)
RibbitMQ学习笔记之RabbitMQ 集群
273 0
|
消息中间件 Java 数据安全/隐私保护
SpringBoot 整合 RabbitMQ|学习笔记
快速学习 SpringBoot 整合 RabbitMQ
277 0
SpringBoot 整合 RabbitMQ|学习笔记
|
消息中间件 Web App开发 NoSQL
RabbitMQ学习笔记2
RabbitMQ学习笔记
242 0
|
消息中间件 存储 网络协议
RabbitMQ学习笔记1
RabbitMQ学习笔记
178 0
|
消息中间件 存储 新零售
初步了解消息队列 RabbitMQ 版|学习笔记
快速学习初步了解消息队列 RabbitMQ 版
287 0

热门文章

最新文章