Skip to content

RabbitMQ

RabbitMQ介绍

  • RabbitMQ是一个由Erlang语言开发的AMQP1的开源实现

  • 应用场景主要有:异步处理、应用解耦、流量削峰、消息通讯

RabbitMQ中的专业名词介绍

  • Broker: 接收和分发消息的应用,Message Broker
  • Virtual host: 出于多租户和安全因素设计的,多用户使用一个Broker时,不同的用户通过Virtual host的隔离,在各自的空间创建exchange、queue
  • Connection: Publisher/Consumer和Broker之间的TCP连接
  • Channel:Channel是在Connection内部建立的逻辑连接,可极大减少操作系统建立TCP Connection的开销
  • Exchange: Message到达Broker的第一站,根据分发规则,匹配查询表的routing key,分发消息到Queue中去。常见 Direct、Topic、Fanout
  • Queue: 消息最终被送到这里,等待Consumer取走。
  • Binding: Exchange和Queue之间的虚拟连接,binding中可包含routing key。Binding信息保存到Exchange中的查询表,用于message分发依据

概念图1 概念图2

RabbitMQ安装

  1. 下载Erlang,地址
  2. 配置环境变量ERLang_HOME
  3. 下载安装RabbitMQ
  4. 运行安装命令 rabbitmq-plugins enable rabbitmq_management rabbitmqctl status 使用localhost:15672访问页面

RabbitMQ应用

  • gitlab项目 实现基本的功能
  • 使用死信队列,延时发送邮件

  1. Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计