RabbitMQ简介

RabbitMQ简介

Intro

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。实现高性能,高可用,可伸缩和最终一致性架构。是大型分布式系统不可缺少的中间件。

RabbitMQ——Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ 是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现。

RabbitMQ作为一个消息代理,主要和消息打交道,负责接收并转发消息。

RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景

MQ使用场景

  1. 异步处理

    不用MQ时可能的处理流程:

    RabbitMQ简介_第1张图片
    common

    使用MQ处理:

    RabbitMQ简介_第2张图片
    mq
  1. 流量削峰

    RabbitMQ简介_第3张图片
    decrease top
  1. 应用解耦

    RabbitMQ简介_第4张图片
    cross_system_mq
  1. 日志处理

    RabbitMQ简介_第5张图片
    log_mq

Install on Windows

  1. 安装 Erlang 环境

    RabbitMQ 是 Erlang 语言写的,首先我们需要安装Erlang 环境

    下载地址:

    • Erlang Runtime
  2. 安装 RabbitMQ Server

    下载地址:

    • RabbitMQ
  3. 启用Web管理插件

    RabbitMQ 安装后会自动在安装并启动服务,RabbitMQ 自带一个Web管理界面,需要手动启用

    打开 RabbitMQ 安装目录,在 sbin 目录下执行命令:

    • cmd

      rabbitmq-plugins.bat enable rabbitmq_management

    • powershell

      .\rabbitmq-plugins.bat enable rabbitmq_management

    在浏览器访问 http://localhost:15672 ,登录 Web 管理界面

    默认用户名/密码: guest/guest

Get Started

  1. RabbitMQ 核心概念

    1. Publisher:生产者,消息的发送方。
    2. Connection:网络连接。
    3. Channel:信道,多路复用连接中的一条独立的双向数据流通道。
    4. Exchange:交换器(路由器),负责消息的路由到相应队列。
    5. Binding:队列与交换器间的关联绑定。消费者将关注的队列绑定到指定交换器上,以便Exchange能准确分发消息到指定队列。
    6. Queue:队列,消息的缓冲存储区。
    7. Virtual Host:虚拟主机,虚拟主机提供资源的逻辑分组和分离。包含连接,交换,队列,绑定,用户权限,策略等。
    8. Broker:消息队列的服务器实体。
    9. Consumer:消费者,消息的接收方。
  2. RabbitMQ 消息模型

    1. RabbitMQ 消息结构

      RabbitMQ简介_第6张图片
      RabbitMQ structure
    2. 无Exchange单Consumer

      RabbitMQ简介_第7张图片
      RabbitMQ single consumer
    3. 无Exchange多Consumer

      RabbitMQ简介_第8张图片
      RabbitMQ single consumer
    4. Exchange多Consumer

      RabbitMQ简介_第9张图片
      RabbitMQ single consumer
    5. 公平分发

      RabbitMQ简介_第10张图片
      RabbitMQ avarage distribution
    6. RPC

      RabbitMQ简介_第11张图片
      RabbitMQ RPC
  3. RabbitMQ 常用ExchangeType介绍

    1. direct(明确的路由规则:消费端绑定的队列名称必须和消息发布时指定的路由名称一致)

      RabbitMQ简介_第12张图片
      direct exchangeType
    2. fanout(消息广播,将消息分发到exchange上绑定的所有队列上)

      fanout的路由机制如下图,即发送到 fanout 类型 exchange 的消息都会分发到所有绑定该 exchange 的队列上去。

      RabbitMQ简介_第13张图片
      fanout exchangeType
    3. topic(模式匹配的路由规则:支持通配符)

      topicdirect 的升级版,是一种模式匹配的路由机制。它支持使用两种通配符来进行模式匹配:符号#和符号*。其中*匹配一个单词, #则表示匹配0个或多个单词,单词之间用.分割。如下图所示。

      RabbitMQ简介_第14张图片
      topic exchangeType
    4. x-delayed-message(需要插件支持,插件下载地址:rabbitmq_delayed_message_exchange)

      支持 directtopic 模式,支持消息延迟发送

Reference

  • http://www.rabbitmq.com/getstarted.html
  • https://github.com/rabbitmq/rabbitmq-tutorials
  • http://www.cnblogs.com/sheng-jie/p/7192690.html
  • http://www.cnblogs.com/itfly8/p/5155983.html
  • https://www.zhihu.com/question/34243607
  • https://kb.cnblogs.com/page/537914/

你可能感兴趣的:(RabbitMQ简介)