RabbitMQ学习笔记:原理初探

1.简单介绍:

RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面都非常的优秀。是当前最主流的消息中间件之一。

RabbitMQ的官网:http://www.rabbitmq.com

2. AMQP

AMQP,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,同样,消息使用者也不用知道发送者的存在。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

3.系统架构

上图所示:

  • AMQP 里主要要说两个组件:Exchange 和 Queue;
  • 绿色的 X 就是 Exchange ,红色的方块是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的;
  • 而蓝色的则是客户端,通常有 Producer(生产者) 和 Consumer(消费者) 两种类型;

RabbitMQ 的工作流程:

  1. 【打开频道】客户端连接到消息队列服务器,打开一个 Channel
  2. 【声明交换机】客户端声明一个 Exchange ,并设置相关属性;
  3. 【声明消息队列】客户端声明一个 Queue,并设置相关属性;
  4. 【绑定交换机和队列】客户端使用 routing key,在 ExchangeQueue 之间建立好绑定关系;
  5. 【消息投递】客户端投递消息到 Exchange Exchange 接收到消息后,就根据消息的 Routing Key 和已经设置的 Binding,进行消息路由,将消息投递到一个或多个队列里;

注意:一个消费者只能消费一条消息(如果重复声明,类型参数不变不会报错。 如果第二次声明和第一次类型参数有变化,会报异常) ;

4.基本概念

  • Producer:生产者,数据的发送方;
  • Consumer:消费者,数据的接收方;
  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列;
  • Queue:消息队列载体,每个消息都会被投入到一个或多个队列;
  • Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来;
  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递;
  • vhost:虚拟主机(默认“/”),一个Broker里可以开设多个vhost,用作不同用户的权限分离;
  • Channel:消息通道,在客户端的每个连接里,可建立多个Channel,每个Channel代表一个会话任务;

猜你喜欢

转载自blog.csdn.net/ChaITSimpleLove/article/details/106035197