天天看點

一文上手rabbitmq

優勢:

解耦:請求通過mq提高容錯性,

異步提速:請求到mq,直接傳回給用戶端,剩下的mq處理

削峰填谷:請求到mq用戶端慢慢處理

一文上手rabbitmq

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 中的 &lt;&lt;“guest”&gt;&gt;,隻保留guest

啟動服務<code>systemctl start rabbitmq-server</code>

建立一個使用者,登陸web端位址<code>ip:15672</code>

一文上手rabbitmq

建立一個虛拟機

一文上手rabbitmq

賦予權限

一文上手rabbitmq

配置讀取工具類

連接配接工具類

helloworld(發送接收)

workqueues模式(1生産對多消費者)

代碼

解析

預設使用平分的政策,例如99個消息,共有3個消費者,平均每個消費者消費33個

<code>channel.basicQos(1)</code>意思目前的确認消費完後再消費其他的

釋出訂閱模式(可視化頁面建立交換機名為釋出訂閱交換機 類型為FANOUT)

釋出訂閱模式與工作隊列模式

工作隊列模式消費者對消息是競争關系而釋出訂閱模式是共享

建立路由,隊列與交換機綁定後會消息會從路由同步到隊列

路由模式(可視化頁面建立交換機名為路由模式交換機 類型為direct)

路由模式就是比釋出訂閱模式分的更細,同一個交換機下可根據不同的路由key去發送,不同的路由key也可以綁定不同的隊列

topic模式

代碼:

路由模式屬于對routekey精準比對,topic模式屬于可以使用通配符比對

#routingkey一般使用一個或多個詞組成,使用.進行分割,#比對一個或多個詞,*比對一個詞

總結5種模式

一文上手rabbitmq

确認

confirm:是否能夠發送到指定的交換機

return:是否能夠發送到隊列

生産者配置檔案

生産者

配置檔案

2.消費者監聽器

連接配接配置

總結

隊列設定x-message-ttl消息到時間不消費會被删除,被消費但未确認的不會删除

隊列x-expires隊列到時間沒有消費者會自動幹掉這個隊列

消息的Expiration,這個不會到時間幹掉而是在消費時檢查這個消息是否有效,無效删除

一文上手rabbitmq

消息進入死信隊列的條件

逾時未消費

被拒收且不傳回到隊列

隊列長度超出

延時隊列是基于死信隊列,例如普通隊列設定30分鐘逾時,那麼你直接去取死信隊列中的資料,那麼就是延時半小時的消息

作者: JaminYe

出處:https://www.cnblogs.com/JaminYe/p/15548507.html/

版權聲明:本文原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。