rabbit MQ 學習

 

 

使用比較多的是 集羣模式:  鏡像隊列模型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 

 

至於消費端是否重複收到消息 產生的 影響,確定要 消息端 本身去保證 消息處理的 冪等性了。

 

 

 

 

 

 

 

 

 

以上來自慕課網

相關文章
相關標籤/搜索