優勢:
解耦:請求通過mq提高容錯性,
異步提速:請求到mq,直接傳回給用戶端,剩下的mq處理
削峰填谷:請求到mq用戶端慢慢處理

broker:rabbitmq伺服器
connection:tcp長連接配接
channel:connection開銷大,輕量級,可複用
vhost:虛拟主機,相當于mysql中的資料庫
exchange:根據不同的分發規則将消息分發到隊列,有不同類型
queue:隊列
binding:路由器與隊列的連接配接,包含routing key儲存在路由器中,作為分發依據
上傳檔案3.6.5版本及安裝包
安裝Erlang<code>rpm -iUvh erlang-18.3-1.el7.centos.x86_64.rpm</code>
安裝socat<code>rpm -iUvh socat-1.7.3.2-1.1.el7.x86_64.rpm</code>
如果報錯依賴監測失敗先安裝tcp_wrappers<code>yum install tcp_wrappers -y</code>再次安裝socat
安裝rabbitmq<code>rpm -iUvh rabbitmq-server-3.6.5-1.noarch.rpm</code>
開啟管理界面<code>rabbitmq-plugins enable rabbitmq_management</code>
修改配置檔案<code>vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app</code> loopback_users 中的 <<“guest”>>,隻保留guest
啟動服務<code>systemctl start rabbitmq-server</code>
建立一個使用者,登陸web端位址<code>ip:15672</code>
建立一個虛拟機
賦予權限
配置讀取工具類
連接配接工具類
helloworld(發送接收)
workqueues模式(1生産對多消費者)
代碼
解析
預設使用平分的政策,例如99個消息,共有3個消費者,平均每個消費者消費33個
<code>channel.basicQos(1)</code>意思目前的确認消費完後再消費其他的
釋出訂閱模式(可視化頁面建立交換機名為釋出訂閱交換機 類型為FANOUT)
釋出訂閱模式與工作隊列模式
工作隊列模式消費者對消息是競争關系而釋出訂閱模式是共享
建立路由,隊列與交換機綁定後會消息會從路由同步到隊列
路由模式(可視化頁面建立交換機名為路由模式交換機 類型為direct)
路由模式就是比釋出訂閱模式分的更細,同一個交換機下可根據不同的路由key去發送,不同的路由key也可以綁定不同的隊列
topic模式
代碼:
路由模式屬于對routekey精準比對,topic模式屬于可以使用通配符比對
#routingkey一般使用一個或多個詞組成,使用.進行分割,#比對一個或多個詞,*比對一個詞
總結5種模式
确認
confirm:是否能夠發送到指定的交換機
return:是否能夠發送到隊列
生産者配置檔案
生産者
配置檔案
2.消費者監聽器
連接配接配置
總結
隊列設定x-message-ttl消息到時間不消費會被删除,被消費但未确認的不會删除
隊列x-expires隊列到時間沒有消費者會自動幹掉這個隊列
消息的Expiration,這個不會到時間幹掉而是在消費時檢查這個消息是否有效,無效删除
消息進入死信隊列的條件
逾時未消費
被拒收且不傳回到隊列
隊列長度超出
延時隊列是基于死信隊列,例如普通隊列設定30分鐘逾時,那麼你直接去取死信隊列中的資料,那麼就是延時半小時的消息
作者: JaminYe
出處:https://www.cnblogs.com/JaminYe/p/15548507.html/
版權聲明:本文原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。