-
rabbitMQ簡介二
查看全部 -
rabbitMQ簡介
查看全部 -
安裝rabbitMQ
查看全部 -
記錄一下,安裝過程
查看全部 -
AMQP協(xié)議模型
查看全部 -
好好學習查看全部
-
保障100%消息投遞成功設(shè)計方案步驟:
Step 1: 首先把消息信息(業(yè)務(wù)數(shù)據(jù))存儲到數(shù)據(jù)庫中,緊接著,我們再把這個消息記錄也存儲到一張消息記錄表里(或者另外一個同源數(shù)據(jù)庫的消息記錄表)。
Step 2:發(fā)送異步消息到MQ Broker節(jié)點(采用confirm方式發(fā)送,會有異步的返回結(jié)果)。
Step 3、4:生產(chǎn)者端接受MQ Broker節(jié)點返回的Confirm確認消息結(jié)果,然后進行更新消息記錄表里的消息狀態(tài)。比如默認Status = 0 當收到消息確認成功后,更新為1即可!
Step 5:但是在消息確認這個過程中可能由于網(wǎng)絡(luò)閃斷、MQ Broker端異常等原因?qū)е禄厮拖⑹』蛘弋惓#磗tep2發(fā)送消息成功了,但step3失?。?。這個時候就需要發(fā)送方(生產(chǎn)者)對消息進行可靠性投遞了,保障消息不丟失,保障100%的投遞成功?。ㄓ幸环N極限情況是閃斷,Broker返回的成功確認消息,但是生產(chǎn)端由于網(wǎng)絡(luò)閃斷沒收到,這個時候重新投遞可能會造成消息重復(fù),需要消費端去做冪等處理)所以我們需要有一個定時任務(wù),(比如每5分鐘拉取一下處于中間狀態(tài)的消息,當然這個消息可以設(shè)置一個超時時間,比如超過1分鐘 Status = 0 ,也就說明了1分鐘這個時間窗口內(nèi),我們的消息沒有被確認,那么會被定時任務(wù)拉取出來)。
Step 6:接下來我們把中間狀態(tài)的消息進行重新投遞 retry send,繼續(xù)發(fā)送消息到MQ ,當然也可能有多種原因?qū)е掳l(fā)送失敗。
Step 7:我們可以采用設(shè)置最大努力嘗試次數(shù),比如投遞了3次,還是失敗,那么我們可以將最終狀態(tài)設(shè)置為Status = 2 ,最后 交由人工解決處理此類問題(或者把消息轉(zhuǎn)儲到失敗表中)。
注意:此方案只保證100%投遞成功,不保證是否出現(xiàn)多投的情況,需要消費者做冪等。
查看全部 -
Direct exchange(直連交換機)
直連型交換機(direct exchange)是根據(jù)消息攜帶的路由鍵(routing key)將消息投遞給對應(yīng)隊列的,步驟如下:
將一個隊列綁定到某個交換機上,同時賦予該綁定一個路由鍵(routing key)
當一個攜帶著路由值為R的消息被發(fā)送給直連交換機時,交換機會把它路由給綁定值同樣為R的隊列。
Fanout exchange(扇型交換機)
扇型交換機(funout exchange)將消息路由給綁定到它身上的所有隊列。不同于直連交換機,路由鍵在此類型上不啟任務(wù)作用。如果N個隊列綁定到某個扇型交換機上,當有消息發(fā)送給此扇型交換機時,交換機會將消息的發(fā)送給這所有的N個隊列
Topic exchange(主題交換機)
主題交換機(topic exchanges)中,隊列通過路由鍵綁定到交換機上,然后,交換機根據(jù)消息里的路由值,將消息路由給一個或多個綁定隊列。
扇型交換機和主題交換機異同:
對于扇型交換機路由鍵是沒有意義的,只要有消息,它都發(fā)送到它綁定的所有隊列上
對于主題交換機,路由規(guī)則由路由鍵決定,只有滿足路由鍵的規(guī)則,消息才可以路由到對應(yīng)的隊列上
Headers exchange(頭交換機)
類似主題交換機,但是頭交換機使用多個消息屬性來代替路由鍵建立路由規(guī)則。通過判斷消息頭的值能否與指定的綁定相匹配來確立路由規(guī)則。?
此交換機有個重要參數(shù):”x-match”
當”x-match”為“any”時,消息頭的任意一個值被匹配就可以滿足條件
當”x-match”設(shè)置為“all”的時候,就需要消息頭的所有值都匹配成功
查看全部 -
可靠性投遞方案
查看全部 -
amqp協(xié)議模型
查看全部 -
step1. 數(shù)據(jù)入庫同時消息(msg)入庫
step2.發(fā)送消息
step3.請求確認 confirm
step4.讀取數(shù)據(jù)庫msg消息修改狀態(tài)status:1
step5.但發(fā)送消息網(wǎng)絡(luò)中斷,通過定時任務(wù)查詢狀態(tài)為status:0的消息
step6.抓取消息,重新投遞
step7.最大嘗試次數(shù) 3次 不能成功則狀態(tài)修改為2。
查看全部 -
100%消息投遞成功設(shè)計
注意:只考慮發(fā)送方100%投遞,當多次投遞成功需要接收方做“冪等”處理。查看全部 -
消息流轉(zhuǎn)數(shù)據(jù)過程
查看全部 -
AMQP 高級消息隊列協(xié)議
查看全部 -
采用模式:鏡像隊列模式,數(shù)據(jù)不丟失
查看全部
舉報