博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识 RabbitMQ
阅读量:6849 次
发布时间:2019-06-26

本文共 1679 字,大约阅读时间需要 5 分钟。

rabbitMQ 是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间的共享数据,即跨平台。它是使用 Erlang 语言来编写的,并且 rabbitMQ 是基于 AMQP 协议的,在 Java,PHP 等等技术栈里面都能使用。1

特点:

rabbitMQ 在滴滴,美团,头条艺龙等大厂中广泛应用,这是因为它具有如下的特点:

开源,性能优秀,稳定性保障;提供可靠性消息投递模式 (confirm),返回模式 (return);与 SpringAMQP 完美的结合,API丰富;集群模式丰富,表达式配置,HA模式,镜像队列模型(常用);保证数据不丢失的前提做到高可靠性,可用性。复制代码

rabbitMQ 高性能原因: 采用 erlang 语言开发

erlang 语言最初在于交换机领域的架构模式,这样使得 rabbitMQ 在 broker 之间进行数据交互的性能是非常优秀的。erlang 的优点:有着和原生 socket 一样的延迟。复制代码

AMQP 协议: advanced message queuing Protocol,即 高级消息队列协议。 AMQP 的定义:是具有现代特征的二进制协议,是一个提供统一消息服务的应用层标准高级消息队列协议,是具有应用层协议的一个开放标准,为面向消息的中间件设计

如下面的 AMQP 协议模型图示,生产者 publisher 将消息放到服务器 server 上,再到虚拟主机 virtual host ,才到 exchange 上,然后 exchange 根据路由键把当前消息投递到对应的 queue 当中,消费者监听指定的 queue 即可获得消息。

AMQP 核心概念:

server: 又称 broker,也就是服务端,接受客户端的连接,实现 AMQP 实体服务

Connection: 连接,应用程序与 broker 的网络连接

channel: 网络信道,几乎所有的操作都在 channel 中进行,channel 是进行消息读写的通道。客户端可建立多个 channel,每个 channel 代表一个回话任务。

message: 消息,服务器和应用程序之间传送的数据,由 properties 和 body 组成。

properties  可以对消息进行修饰,比如消息的优先级/延迟等高级特性;body 就是消息体内容。复制代码

virtual host: 虚拟地址,用于进行逻辑隔离,是最上层的消息路由,是一个逻辑概念, 最上层的消息路由,类似 redis 分 16 个逻辑数据库。一个 virtual host 里面可以有若干个 exchange 和 queue,同一个 virtual host 里面不能有相同名称的 exchange 或 queue。

exchange: 交换机,接收消息,根据路由键 routingKey 转发消息到绑定的队列。

生产者直接把消息放到 exchange 里面,exchange 根据路由键转发消息到绑定的队列里面, exchange 和队列有一个绑定的关系

binding: exchange 和 queue 之间的虚拟连接,binding 中可以包含r outing key

routing key: 一个路由规则,虚拟机可用它来确定如何路由一个特定消息。

queue: 也成为 massage queue,消息队列,保存消息并将它们转发给消费者。

rabbitMQ 的整体架构

rabbitMQ 的整体架构如下图所示,最大的特点就是生产者不需要关心消息投递到哪个队列,消费者也不需要关心这个消息是从哪个 exchange 来的

rabbitMQ 消息的流转如下图所示,生产者生产并投递消息到 exchange 里面,exchange 可以绑定多个队列,exchange 根据路由策略路由键把消息放到对应的一个队列当中。发消息时有两个关注点,第一是指定放到哪个 exchange 上,第二是在发送消息时设置路由键,消费者订阅消费消息即可。

转载地址:http://rulul.baihongyu.com/

你可能感兴趣的文章
关于输入输出及编译优化 模板代码
查看>>
世界上各种壮观震撼奇景。也许你这辈子都看不到了!
查看>>
安装包制作工具 SetupFactory使用2 API清单
查看>>
js中with、this的用法
查看>>
ADO.NET调用存储过程
查看>>
安装UBUNTU Server 11.10
查看>>
MVVM架构~使用boxy和knockoutjs实现编辑功能
查看>>
Web analytics unique visitors go sky high 网站分析报表,唯一IP地址用户
查看>>
MVC之参数验证(三)
查看>>
android截图 - 截取ContentView - 截取指定的View并且保存
查看>>
Prism 4 文档 ---第5章 实现MVVM模式
查看>>
Eclipse中查看JDK类库源代码
查看>>
install_lnmp.sh
查看>>
子数组的和的最大值(包括升级版的首尾相连数组)
查看>>
Java-笔记6-复习
查看>>
C#中Static的妙用
查看>>
poj 2752 前后缀匹配
查看>>
锚点定位偏移问题
查看>>
QTP的那些事—WMI+SQL分析查询工具
查看>>
柯里化
查看>>