RabbitMQ是什麼web
MQ全稱爲Message Queue, 消息隊列(MQ)是一種應用程序對應用程序的通訊方法。應用程序經過讀寫出入隊列的消息(針對應用程序的數據)來通訊,而無需專用鏈接來連接它們。消息傳遞指的是程序之間經過在消息中發送數據進行通訊,而不是經過直接調用彼此來通訊,直接調用一般是用於諸如遠程過程調用的技術。排隊指的是應用程序經過 隊列來通訊。隊列的使用除去了接收和發送應用程序同時執行的要求。vim
- 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 | 內存節點 |
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 //檢查三臺的集羣狀態,目前相互獨立,沒有造成集羣。
構建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
Priority:優先級,默認是0,值越大優先級越大。
dom
、ide
在建立一個aaa 不填寫Arguments值插件
查看隊列消息
3d
 
 
如今把剛剛的節點都開啓
# rabbitmqctl sync_queue aa //01或者02上執行同步命令 # systemctl restart rabbitmq-server.service //重啓3個節點的服務
查看隊列在服務器的位置
# ll -a /var/lib/rabbitmq/mnesia/rabbit@rabbitmq01/queues/
- 一個目錄對應的就是一個隊列,裏面就是該隊列自己的消息。注意若是內存節點故障,隊列就會丟失;若是是磁盤節點故障,隊列還會存在。但若是建立隊列是指定了 x-ha-prolicy參數,待修復磁盤節點故障後,在啓動磁盤節點的rabbitmq服務,未消費的隊列消息及消息會不存在,須要手動執行同步隊列命令。