RabbitMQ简介

作者: 天天向上卡索 | 来源:发表于2017-11-22 11:35 被阅读54次

    RabbitMQ简介

    Intro

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

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

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

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

    MQ使用场景

    1. 异步处理

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

      common

      使用MQ处理:

      mq
    1. 流量削峰

      decrease top
    1. 应用解耦

      cross_system_mq
    1. 日志处理

      log_mq

    Install on Windows

    1. 安装 Erlang 环境

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

      下载地址:

    2. 安装 RabbitMQ Server

      下载地址:

    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 structure
      2. 无Exchange单Consumer

        RabbitMQ single consumer
      3. 无Exchange多Consumer

        RabbitMQ single consumer
      4. Exchange多Consumer

        RabbitMQ single consumer
      5. 公平分发

        RabbitMQ avarage distribution
      6. RPC

        RabbitMQ RPC
    3. RabbitMQ 常用ExchangeType介绍

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

        direct exchangeType
      2. fanout(消息广播,将消息分发到exchange上绑定的所有队列上)

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

        fanout exchangeType
      3. topic(模式匹配的路由规则:支持通配符)

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

        topic exchangeType
      4. x-delayed-message(需要插件支持,插件下载地址:rabbitmq_delayed_message_exchange)

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

    Reference

    相关文章

      网友评论

        本文标题:RabbitMQ简介

        本文链接:https://www.haomeiwen.com/subject/ilenvxtx.html