网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

RabbitMQ学习笔记(一)-基本概念

2021/4/19 19:51:56 人评论

一、基本内容 1、介绍: 实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语…

一、基本内容

1、介绍: 实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

2、AMQP协议: AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。

(1)工作模型:
在这里插入图片描述
(2)工作过程:

  • 发布者(Publisher)发布消息(Message),经由交换机(Exchange);
  • 交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue);
  • 最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。

(3)深入理解:

  • 1、发布者、交换机、队列、消费者都可以有多个。同时因为 AMQP 是一个网络协议,所以这个过程中的发布者,消费者,消息代理 可以分别存在于不同的设备上。
  • 2、发布者发布消息时可以给消息指定各种消息属性(Message Meta-data)。有些属性有可能会被消息代理(Brokers)使用,然而其他的属性则是完全不透明的,它们只能被接收消息的应用所使用。
  • 3、从安全角度考虑,网络是不可靠的,又或是消费者在处理消息的过程中意外挂掉,这样没有处理成功的消息就会丢失。基于此原因,AMQP 模块包含了一个消息确认(Message
    Acknowledgements)机制:当一个消息从队列中投递给消费者后,不会立即从队列中删除,直到它收到来自消费者的确认回执(Acknowledgement)后,才完全从队列中删除。
  • 4、在某些情况下,例如当一个消息无法被成功路由时(无法从交换机分发到队列),消息或许会被返回给发布者并被丢弃。或者,如果消息代理执行了延期操作,消息会被放入一个所谓的死信队列中。此时,消息发布者可以选择某些参数来处理这些特殊情况。

3、相关组件概念:
(1)Broker:消息中间件的服务节点 。对于 RabbitMQ 来说, 一个 RabbitMQ Broker 可以简单地看作 一个 RabbitMQ 服务节点, 或者 RabbitMQ服务实例。大多数情况下也可以将一个 RabbitMQ Broker看作一台 RabbitMQ 服务器 ;
(2)Virtual host:vhost 是 AMQP 概念的基础,客户端在连接的时候必须制定一个 vhost。 RabbitMQ 默认创 建的 vhost 为“/”,如果不需要多个 vhost 或者对 vhost 的概念不是很理解,那么用这个默认的 vhost 也是非常合理的,使用默认的用户名 guest 和密码 guest 就可以访问它。但是为了安全和 方便,建议重新建立 一个新的用户来访问它。
(3)connection: AMQP 连接通常是长连接。AMQP 是一个使用 TCP 提供可靠投递的应用层协议。AMQP 使用认证机制并且提供 TLS(SSL)保护。当一个应用不再需要连接到 AMQP 代理的时候,需要优雅的释放掉 AMQP 连接,而不是直接将 TCP 连接关闭。
(4)channel: 如果每一次访问 RabbitMQ 都建立一个 Connection,在消息量大的时候建立 TCP Connection的开销将是巨大的,效率也较低。所以在AMQP里面引入了Channel的概念,它是一个虚拟的连接。我们把它翻译成通道,或者消息信道。这样我们就可以在保持的TCP 长连接里面去创建和释放Channel,大大了减少了资源消耗。
(5)exchange: 交换机是用来发送消息的 AMQP 实体,交换机拿到一个消息之后将它路由给一个或零个队列,它使用哪种路由算法是由交换机类型和绑定(Bindings)规则所决定的。
在这里插入图片描述
(6)queue: AMQP 中的队列(queue)跟其他消息队列或任务队列中的队列是很相似的:它们存储着即将被应用消费掉的消息。
(7)binding:exchange 和 queue 之间的虚拟连接,binding 中可以包含 routing key。Binding 信息被保存到 exchange 中的查询表中,用于 message 的分发依据;
在这里插入图片描述

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?