RabbitMQ的原理和作用是什么
本篇内容介绍了“RabbitMQ的原理和作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联主营龙门网站建设的网络公司,主营网站建设方案,成都App定制开发,龙门h5重庆小程序开发公司搭建,龙门网站营销推广欢迎龙门等地区企业咨询
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高级消息队列协议
它是一个现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准.它就是一个 规范.
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整体架构
生产者发送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.发送到交换机的消息的消息都会被转 发到与该交换机绑定的所有队列上面,它转发消息是最快的
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的原理和作用是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
分享名称:RabbitMQ的原理和作用是什么
URL网址:http://myzitong.com/article/piecpj.html