RabbitMQ簡介

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是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。支持消息的持久化、事務、擁塞控...
    jiangmo閱讀 10,398評論 2 34
  • 1.什么是消息隊列 消息隊列允許應用間通過消息的發送與接收的方式進行通信,當消息接收方服務忙或不可用時,其提供了一...
    zhuke閱讀 4,495評論 0 12
  • 關于消息隊列,從前年開始斷斷續續看了些資料,想寫很久了,但一直沒騰出空,近來分別碰到幾個朋友聊這塊的技術選型,是時...
    預流閱讀 585,385評論 51 786
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 一、簡要介紹 開源AMQP實現,Erlang語言編寫,支持多種客戶端 分布式、高可用、持久化、可靠、安全 支持多種...
    會跳舞的機器人閱讀 1,169評論 0 3