RabbitMQ的原理和作用是什么

发布时间:2021-06-25 14:31:18 作者:chen
来源:亿速云 阅读:473

本篇内容介绍了“RabbitMQ的原理和作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、主流消息中间件介绍

1) ActiveMQ:由Apache出品,完全支持JMS规范的消息中间件,丰富的API,多种集群构建模式,在中小型企业中应用广泛,面对超大规模并发
性能不是很好.
2) Kafka:开源的分布式发布-订阅消息系统,基于pull模式来处理消息消费,追求高吞吐量,一开始目的用于日志收集和传输,不支持事务,
对消息的重复、丢失、错误没有严格要求,适合产生大量数据的互联网服务的数据收集业务,强调高性能.
3) RocketMQ:阿里开源,纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统,其思路起源于Kafka,它对消息的可靠性传输及事
务性做了优化.
4) RabbitMQ:使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现,AMQP协议更多应用在企业系统内,对数据一致性、稳定性和
可靠性要求很高的场景,对性能和吞吐量要求还在其次.

2、RabbitMQ高性能的原因

1) Erlang语言最初基于交换机领域的架构模式,使得RabbitMQ在broker之间进行数据交互的性能是非常优秀的
2) Erlang的优点:Erlang有着和原生Socket一样的延迟

3、什么是AMQP高级消息队列协议

  它是一个现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准.它就是一个
规范.

RabbitMQ的原理和作用是什么

4、AMQP核心概念

1) Server:又称Broker,接受客户端的连接,实现AMQP实体服务
2) Connection:连接,应用程序与Broker的网络连接
3) Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道,客户端可建立多个Channel,每个Channel
代表一个会话任务. 拿到Connection后会创建channel
4) Message:消息,由Properties和Body组成,Properties可以对消息体进行修饰,如优先级、延迟等高级特性,Body是消息内容
5) Virtual host:虚拟地址,用于进行逻辑隔离,最上层的消息路由. 一个Virtual Host里面可以有若干个Exchange和Queue,同一个
Virtual Host里面不能有相同名称的Exchange和Queue
6) Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列. 生产者将消息投到Exchange上,Exchange进行一个路由发送到
绑定的Message Queue上
7) binding:Exchange和Queue之间的虚拟连接,binding中可以包含routing key
8) Routing key:一个路由规则,虚拟机可以用它来确定如何路由一个特定消息
9) Queue:也称为Message Queue,消息队列,保存消息并将它们转发给消费者

5、RabbitMQ整体架构

RabbitMQ的原理和作用是什么

RabbitMQ的原理和作用是什么

生产者发送MQ消息时要带上两个关键参数:
1) 指定发送到哪个Exchange
2) 指定Routing Key,通过Exchange和Message Queue建立一个绑定关系,路由到指定Message Queue

6、Exchange交换机

Exchange:接收消息,并根据路由键转发消息到所绑定的队列

交换机属性
1) Name:交换机名称
2) Type:交换机类型,有direct、topic、fanout、headers
3) Durability:是否需要持久化
4) Auto Delete:当最后一个绑定到Exchange上的队列删除后,自动删除该Exchange
5) Arguments:扩展参数,用于扩展AMQP协议定制化使用

交换机类型:
1) Direct Exchange:所有发送到Direct Exchange的消息被转发到Route Key中指定的Queue
   注意:Direct模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定操作,消息传递时,
   Route Key必须完全匹配才会被队列接收,否则被丢弃
2) Topic Exchange:所有发送到Topic Exchange的消息都被转发到所有关心Route Key指定Topic的Queue上.
   Exchange将Route Key和某个Topic进行模糊匹配,队列需要绑定一个Topic. 见下图Topic Exchange
3) Fanout Exchange:不处理路由键,只需要简单的将队列绑定到交换机上,不用设置route key.发送到交换机的消息的消息都会被转
发到与该交换机绑定的所有队列上面,它转发消息是最快的

RabbitMQ的原理和作用是什么

RabbitMQ的原理和作用是什么

7、绑定、队列、消息、虚拟主机详解

1) 绑定
   Exchange和Exchange、Queue之间的连接关系
2) 消息队列
   Durability,是否持久化
   Auto Delete,如选yes,代表当最后一个监听被移除之后,该Queue会自动被删除
3) Message
   服务器和应用程序之间传递的数据
   本质上就是一段数据,由Properties和PayLoad(Body)组成
   常用属性:delivery mode(送达模式,消息到Broker上是否持久化)、headers(自定义属性)
4) Virtual Host虚拟主机
   逻辑概念,虚拟地址,用于逻辑隔离,最上层的消息路由
   一个Virtual Host里面可以有若干个Exchange和Queue
   同一个Virtual Host里面不能有相同名称的Exchange或Queue

“RabbitMQ的原理和作用是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

推荐阅读:
  1. RabbitMQ基本概念和原理是什么
  2. RabbitMQ集群的原理是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rabbitmq

上一篇:php如何实现多线程

下一篇:php如何实现执行某一操作时弹出确认、取消对话框

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》