使用比較多的是 集羣模式: 鏡像隊列模型c++
安裝 rabbitMQ數據庫
wget https://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.suse.noarch.rpmvim
以上是地址centos
安裝的依賴的網絡
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
修改配置架構
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
好比修改密碼,配置 app
好比 loopback_users 中的 <<"gest">>, 只保留 guest 便可oop
服務啓動和中止ui
啓動 rabbitmq-server start & spa
中止 rabbitmqctl app_stop 或者 rabbitmq-server stop
若是 rabbitmqctl stop_app 也 中止不了。
那麼就去到 rabbitmqctl 對應目錄下去執行
好比 個人 rabbitmq 安裝後的目錄是
/usr/lib/rabbitmq
而後進入 cd /usr/lib/rabbitmq/bin
就看到了
rabbitmqctl rabbitmq-defaults rabbitmq-env rabbitmq-plugins rabbitmq-server
執行 rabbitmqctl stop_app 就中止了
lsof -i:5672
也能夠查看 rabbitmq 是否關閉或者啓動了
管理插件:
啓用管控臺:好比在 /usr/lib/rabbitmq/bin 目錄下 敲命令:
rabbitmq-plugins enbale rabbitmq_management
管控臺的端口號: 15672
訪問地址: 地址xxx:15672/
登錄的用戶名和密碼就是前面改的 : guest
rabbitMQ 架構模型
生產者 生產消息, 而後 到 exchange 交換機裏面, 根據 交換規則, 路由到 不一樣的 queues 隊列裏面,而後 消費者 clients 去消費 消息
Channel : 網絡通道,幾乎全部的操做都在 channel中進行, channel是進行消息讀寫的通道。
客戶端可創建多個 channel ,每一個 channel表明義工會話任務。
virtual host
生產者 生產消息, 發送 消息 到 Message , 而後 根據 路由規則, 到 exchange , exchange 根據 和 Message Queue 的綁定路由鍵, 將消息路由到 對應的 queuee 上,而後you 監聽到 message queue 的消費者 去消費 消息
保障消息100% 生產投遞成功
上圖指得是 生產端 生產的消息
生產者 Sender 產生消息的同時, 會將對應的業務數據和 消息記錄日誌記錄到 數據庫裏面。
把消息發送給MQ後, 經過 Confirm Listener 來 收到 確認消息投遞成功。
若是 Confirm Listener 消息成功以後 ,更新 狀態 status=1 成功了。
不然, 經過定時任務判斷消息狀態爲0 的消息, 也是找到未成功發送的消息,而後去重發給 MQ
至於消費端是否重複收到消息 產生的 影響,確定要 消息端 本身去保證 消息處理的 冪等性了。
以上來自慕課網