亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

RabbitMQ隊(duì)列中間件消息持久化?確認(rèn)機(jī)制?死信隊(duì)列原理

 更新時(shí)間:2023年05月10日 09:51:21   作者:stark張宇  
這篇文章主要介紹了消息隊(duì)列中間件之RabbitMQ消息的持久化、確認(rèn)機(jī)制、死信隊(duì)列原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

持久化和應(yīng)答機(jī)制Ack

消息隊(duì)列中間件系列的最后一篇了,RabbitMQ消息的持久化、確認(rèn)機(jī)制、死信隊(duì)列、負(fù)載均衡等一系列進(jìn)行說(shuō)明。

消息持久化

  • 當(dāng)RabbitMq重啟以后,未消費(fèi)的消息,可以在服務(wù)重啟后繼續(xù)消費(fèi),不會(huì)丟失。

應(yīng)答機(jī)制Ack

兩種方式:一種是自動(dòng)確認(rèn),一種是手動(dòng)確認(rèn)

  • 自動(dòng)確認(rèn)就是消費(fèi)者接收消息以后,立即ack,然后再慢慢處理業(yè)務(wù)邏輯,假如業(yè)務(wù)邏輯出現(xiàn)異常,消息也會(huì)被確認(rèn)的。
  • 手動(dòng)確認(rèn),消費(fèi)者接收消息以后,消息狀態(tài)被置為unack狀態(tài),然后由業(yè)務(wù)邏輯指定ack的位置,假如沒(méi)有手動(dòng)ack,則mq中的消息不回減少。

死信隊(duì)列

死信隊(duì)列 DLX(Dead-Letter-Exchange) 也可以成為死信交換機(jī),就是當(dāng)一個(gè)隊(duì)列中的消息變成死信以后,會(huì)被重新發(fā)送到另一個(gè)交換機(jī),這個(gè)交換機(jī)就是DLX,而綁定DLX的隊(duì)列就是死信隊(duì)列。

死信隊(duì)列的成因:

**消息被拒絕,**消費(fèi)者中使用 (basic.reject/basic.nack),并且 requeue = false , 消息被拒絕接收后就會(huì)進(jìn)入到死信隊(duì)列中。

# 消費(fèi)者
$callback = function ($msg) {
   // 拒絕接收消息
   $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
};
$channel->basic_qos(null, 1, null);
$channel->basic_consume($queueName,'', false,false,false,false,$callback);

**消息過(guò)期,**可以使用 x-message-ttl 參數(shù)設(shè)置當(dāng)前隊(duì)列中所有消息的過(guò)期時(shí)間(單位毫秒)。一旦消息過(guò)期,就會(huì)從隊(duì)列中刪除。

// 在正常隊(duì)列中設(shè)置消息過(guò)期時(shí)間
$channel->exchange_declare('logs', 'direct',false, false, false);
$args = new AMQPTable([
   // 消息過(guò)期時(shí)間
   'x-message-ttl'             => 20000,
   // 死信交換機(jī)
   'x-dead-letter-exchange'    => 'dead-exc',
   // 死信路由鍵
   'x-dead-letter-routing-key' => 'dead-key'
]);
$channel->queue_declare($queue_name, false, true,false,false,false,$args);
$channel->queue_bind($queue_name, 'logs');

隊(duì)列達(dá)到最大長(zhǎng)度: x-max-length 設(shè)置最大消息數(shù),x-max-length-bytes 設(shè)置最大長(zhǎng)度(以字節(jié)為單位)。如果設(shè)置了兩個(gè)參數(shù),則兩者都將適用,將強(qiáng)制執(zhí)行首先達(dá)到的限制。

$args = new AMQPTable([
// 設(shè)置最大消息數(shù)
   'x-max-length' => 2,
   'x-dead-letter-exchange'    => 'dead-exc',
   'x-dead-letter-routing-key' => 'dead-key'
]);

設(shè)置死信隊(duì)列,只需要定義隊(duì)列的時(shí)候設(shè)置x-dead-letter-exchange指定交換機(jī)就可以了

延時(shí)隊(duì)列

延時(shí)隊(duì)列就是當(dāng)消息發(fā)送以后,并不想讓消費(fèi)者立刻拿到消息,而是等待特定時(shí)間后消費(fèi)者才能拿到消息來(lái)消費(fèi)。

集群模式

  • 允許生產(chǎn)者和消費(fèi)者在RabbitMQ節(jié)點(diǎn)崩潰的情況下繼續(xù)運(yùn)行。
  • 允許通過(guò)添加更多的節(jié)點(diǎn)來(lái)擴(kuò)展消息通信的吞吐量。

RabbitMQ會(huì)始終記錄以下四種類(lèi)型的內(nèi)部元數(shù)據(jù):

  • 隊(duì)列元數(shù)據(jù),隊(duì)列名稱(chēng)和它們的屬性(是否持久化,是否自動(dòng)刪除)
  • 交換機(jī)元數(shù)據(jù),交換器類(lèi)型、名稱(chēng)和屬性
  • 綁定元數(shù)據(jù),一張簡(jiǎn)單的表格展示了如何將消息路由到隊(duì)列
  • vhost元數(shù)據(jù),為vhost內(nèi)的隊(duì)列、交換機(jī)和綁定提供命名空間和安全屬性

RabbitMQ集群分為3個(gè)模式,主備模式,鏡像模式,異地多活模式。

  • 主備模式,從節(jié)點(diǎn)相當(dāng)于主節(jié)點(diǎn)的鏈接,所有從節(jié)點(diǎn)收到的請(qǐng)求,真實(shí)轉(zhuǎn)向的都是主節(jié)點(diǎn),一般在并發(fā)和數(shù)據(jù)不是特別多的情況下使用,當(dāng)主節(jié)點(diǎn)掛掉會(huì)從備份的節(jié)點(diǎn)中選擇一個(gè)節(jié)點(diǎn)出來(lái)作為主節(jié)點(diǎn)對(duì)外提供服務(wù)。
  • 鏡像模式,將需要消費(fèi)的隊(duì)列變成鏡像隊(duì)列,存在于多個(gè)節(jié)點(diǎn),這樣就可以實(shí)現(xiàn)RabbitMQ的HA高可用,作用就是消息實(shí)體會(huì)主動(dòng)在鏡像節(jié)點(diǎn)之間實(shí)現(xiàn)同步,任何一個(gè)節(jié)點(diǎn)宕機(jī)都都關(guān)系,保證100%數(shù)據(jù)不丟失,在實(shí)際工作中用的最多的。
  • 異地多活模式,用來(lái)實(shí)現(xiàn)異地的數(shù)據(jù)復(fù)制,使用多活模式需要借助federation插件來(lái)實(shí)現(xiàn)集群間或節(jié)點(diǎn)間的消費(fèi)復(fù)制,廣泛用于多互聯(lián)網(wǎng)公司。

以上就是消息隊(duì)列中間件 - RabbitMQ消息的持久化、確認(rèn)機(jī)制、死信隊(duì)列的詳細(xì)內(nèi)容,更多關(guān)于消息隊(duì)列中間件 - RabbitMQ的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vscode安裝使用的詳細(xì)教程

    vscode安裝使用的詳細(xì)教程

    Visual Studio Code (簡(jiǎn)稱(chēng) VS Code / VSC) 是一款免費(fèi)開(kāi)源的現(xiàn)代化輕量級(jí)代碼編輯器,這篇文章主要介紹了vscode安裝使用的詳細(xì)教程,需要的朋友可以參考下
    2020-08-08
  • ArcGIS Pro 按照字段進(jìn)行融合或拆分的操作步驟

    ArcGIS Pro 按照字段進(jìn)行融合或拆分的操作步驟

    ArcGIS Pro 是 Esri 提供的功能全面的專(zhuān)業(yè)桌面 GIS 應(yīng)用程序,這篇文章主要介紹了ArcGIS Pro 按照字段進(jìn)行融合或拆分,需要的朋友可以參考下
    2024-02-02
  • APAP?ALV進(jìn)階寫(xiě)法及優(yōu)化詳解

    APAP?ALV進(jìn)階寫(xiě)法及優(yōu)化詳解

    這篇文章主要為大家介紹了APAP?ALV進(jìn)階寫(xiě)法及優(yōu)化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • JetPack開(kāi)發(fā)中使用CameraX完成拍照和拍視頻功能

    JetPack開(kāi)發(fā)中使用CameraX完成拍照和拍視頻功能

    CameraX 是一個(gè) Google 推出的 JetPack 組件。今天給大家分享JetPack之使用CameraX完成拍照和拍視頻,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-06-06
  • 趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解

    趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解

    這篇文章主要介紹了趁熱打鐵!HTTPGet與HTTPPost的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • IDEA開(kāi)啟Run Dashboard的配置詳解

    IDEA開(kāi)啟Run Dashboard的配置詳解

    這篇文章主要介紹了IDEA開(kāi)啟Run Dashboard的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Hadoop環(huán)境搭建過(guò)程中遇到的問(wèn)題及解決方法

    Hadoop環(huán)境搭建過(guò)程中遇到的問(wèn)題及解決方法

    這篇文章主要介紹了Hadoop環(huán)境搭建過(guò)程中遇到的問(wèn)題及解決方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-08-08
  • Webstorm開(kāi)發(fā)工具使用教程詳解

    Webstorm開(kāi)發(fā)工具使用教程詳解

    這篇文章主要為大家詳細(xì)介紹了Webstorm使用教程的使用教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • 新手程序員編程必不可少的工具

    新手程序員編程必不可少的工具

    這篇文章主要為大家詳細(xì)介紹了新手程序員編程必不可少的工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 電子郵件 退信原因大全

    電子郵件 退信原因大全

    我們可以對(duì)郵件多嘗試幾次發(fā)送,如果實(shí)在不行那就過(guò)一會(huì)再發(fā)送郵件。
    2009-06-06

最新評(píng)論