RabbitMQ(消息隊列)安裝、集羣

  • RabbitMQ是什麼web

    MQ全稱爲Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通訊方法。應用程序經過讀寫出入隊列的消息(針對應用程序的數據)來通訊,而無需專用鏈接來連接它們。消息傳遞指的是程序之間經過在消息中發送數據進行通訊,而不是經過直接調用彼此來通訊,直接調用一般是用於諸如遠程過程調用的技術。排隊指的是應用程序經過 隊列來通訊。隊列的使用除去了接收和發送應用程序同時執行的要求。vim

  • RabbitMQ概念
  • Broker:簡單來講就是消息隊列服務器實體。
  • Exchange:消息交換機,它指定消息按什麼規則,路由到哪一個隊列。
  • Queue:消息隊列載體,每一個消息都會被投入到一個或多個隊列。
  • Binding:綁定,它的做用就是把exchange和queue按照路由規則綁定起來。
  • Routing Key:路由關鍵字,exchange根據這個關鍵字進行消息投遞。
  • vhost:虛擬主機,一個broker裏能夠開設多個vhost,用做不一樣用戶的權限分離。
  • producer:消息生產者,就是投遞消息的程序。
  • consumer:消息消費者,就是接受消息的程序。
  • channel:消息通道,在客戶端的每一個鏈接裏,可創建多個channel,每一個channel表明一個會話任務。
主機名 IP 用途
rabbitmq01 192.168.200.128 磁盤節點
rabbitmq02 192.168.200.129 內存節點
rabbitmq03 192.168.200.130 內存節點
  • 安裝RabbitMQ
  • 1:須要配置三個節點的hosts文件,將以下的內容分別加入到三臺服務器上。瀏覽器

    vim /etc/hostname    //其餘兩臺爲rabbitmq0二、rabbitmq03
        rabbitmq01.localdomain
    # vim /etc/hosts  //添加下面三行
    192.168.200.128 rabbitmq01
    192.168.200.129 rabbitmq02
    192.168.200.130 rabbitmq03
    # init 6  //重啓
    # service firewalld stop
    # setenforce 0
  • 2:安裝rabbitmq軟件。服務器

    # yum install epel-release -y     //安裝epel源
    # yum install -y rabbitmq-server  //安裝軟件
    # rabbitmq-plugins list     //查看插件安裝狀況
    # rabbitmq-plugins enable rabbitmq_management //啓用rabbitmq_management服務
    # systemctl start rabbitmq-server.service   //啓動rabbitmq服務
    # netstat -ntap | grep 5672    //如圖3個端口開啓 說明正常
    # rabbitmqctl cluster_status  //檢查三臺的集羣狀態,目前相互獨立,沒有造成集羣。

    RabbitMQ(消息隊列)安裝、集羣

RabbitMQ(消息隊列)安裝、集羣

RabbitMQ(消息隊列)安裝、集羣

  • 構建Erlang羣集cookie

    # systemctl stop rabbitmq-server.service  //中止三臺服務器
    # vi /var/lib/rabbitmq/.erlang.cookie //三臺值配置成同樣的,複製rabbitmq01的內容到其餘兩臺
    # systemctl start rabbitmq-server.service
  • 在0二、 03節點上操做app

    # rabbitmqctl stop_app
    # rabbitmqctl join_cluster --ram rabbit@mq01 //加入到磁盤節點
    # rabbitmqctl start_app

RabbitMQ(消息隊列)安裝、集羣

RabbitMQ(消息隊列)安裝、集羣

  • 建立策略
  • Name:策略名稱
  • Pattern:匹配的規則 (這是表示匹配以a開頭,^ 匹配全部隊列)
  • Definition;使用ha-mode模式中的all,也就是同步全部匹配的隊列。
  • Priority:優先級,默認是0,值越大優先級越大。

    RabbitMQ(消息隊列)安裝、集羣
    dom

  • 添加隊列
  • Name:隊列名稱
  • Durability:隊列是否持久化(durable 是支持)
  • Auto delete:自動刪除
  • Arguments:使用的策略類型

RabbitMQ(消息隊列)安裝、集羣
ide

  • 在建立一個aaa 不填寫Arguments值插件

  • 查看隊列消息
    3d

    RabbitMQ(消息隊列)安裝、集羣

  • 添加隊列消息
  • 2-Persistent:表示持久化,反之上面顯示非持久化。
  • Headers: 隨便填寫
  • Properties:點擊問號,如今一個ID號
  • Payload:消息內容

RabbitMQ(消息隊列)安裝、集羣

 

 

RabbitMQ(消息隊列)安裝、集羣

  • 如今把剛剛的節點都開啓

    # rabbitmqctl sync_queue aa    //01或者02上執行同步命令
    # systemctl restart rabbitmq-server.service   //重啓3個節點的服務

RabbitMQ(消息隊列)安裝、集羣

  • 查看隊列在服務器的位置

    # ll -a /var/lib/rabbitmq/mnesia/rabbit@rabbitmq01/queues/

RabbitMQ(消息隊列)安裝、集羣


  • 總結
  • 一個目錄對應的就是一個隊列,裏面就是該隊列自己的消息。注意若是內存節點故障,隊列就會丟失;若是是磁盤節點故障,隊列還會存在。但若是建立隊列是指定了 x-ha-prolicy參數,待修復磁盤節點故障後,在啓動磁盤節點的rabbitmq服務,未消費的隊列消息及消息會不存在,須要手動執行同步隊列命令。
相關文章
相關標籤/搜索