最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RabbitMQ隊列中間件消息持久化?確認機制?死信隊列原理

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

持久化和應答機制Ack

消息隊列中間件系列的最后一篇了,RabbitMQ消息的持久化、確認機制、死信隊列、負載均衡等一系列進行說明。

消息持久化

  • 當RabbitMq重啟以后,未消費的消息,可以在服務重啟后繼續(xù)消費,不會丟失。

應答機制Ack

兩種方式:一種是自動確認,一種是手動確認

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

死信隊列

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

死信隊列的成因:

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

# 消費者
$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);

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

// 在正常隊列中設置消息過期時間
$channel->exchange_declare('logs', 'direct',false, false, false);
$args = new AMQPTable([
   // 消息過期時間
   'x-message-ttl'             => 20000,
   // 死信交換機
   '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');

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

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

設置死信隊列,只需要定義隊列的時候設置x-dead-letter-exchange指定交換機就可以了

延時隊列

延時隊列就是當消息發(fā)送以后,并不想讓消費者立刻拿到消息,而是等待特定時間后消費者才能拿到消息來消費。

集群模式

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

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

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

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

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

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

相關(guān)文章

  • IEEE Spectrum 2014編程語言排行榜

    IEEE Spectrum 2014編程語言排行榜

    這篇文章主要介紹了IEEE Spectrum 2014編程語言排行榜,這不是TIOBE編程語言排行榜哦,需要的朋友可以參考下
    2014-08-08
  • Elasticsearch之基本查詢及組合查詢操作示例

    Elasticsearch之基本查詢及組合查詢操作示例

    這篇文章主要為大家介紹了Elasticsearch之基本查詢及組合查詢操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • 詳解SHA-256算法的原理以及C#和JS的實現(xiàn)

    詳解SHA-256算法的原理以及C#和JS的實現(xiàn)

    SHA-256 是 SHA-2 下細分出的一種算法。截止目前(2023-03)未出現(xiàn)“碰撞”案例,被視為是絕對安全的加密算法之一,本文主要介紹了SHA-256算法的原理以及C#和JS的實現(xiàn),希望對大家有所幫助
    2023-03-03
  • 鴻蒙中Axios數(shù)據(jù)請求的封裝和配置方法

    鴻蒙中Axios數(shù)據(jù)請求的封裝和配置方法

    這篇文章主要介紹了鴻蒙中Axios數(shù)據(jù)請求的封裝和配置方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2025-04-04
  • Uint?和?int?的區(qū)別解析

    Uint?和?int?的區(qū)別解析

    Int與Uint的區(qū)別在于帶符號與不帶符號,在計算機中根據(jù)補碼進行互相轉(zhuǎn)換,很多語言是有方法支持的,但是也有一些并沒有轉(zhuǎn)換方法,比如SQLserver(SQLserver不支持Uint類型),下面詳細介紹Uint?和?int?的區(qū)別,感興趣的朋友一起看看吧
    2023-08-08
  • EventStore文件存儲設計詳解

    EventStore文件存儲設計詳解

    ENode是一個CQRS+Event Sourcing架構(gòu)的開發(fā)框架,這篇文章主要介紹了EventStore文件存儲設計 ,需要的朋友可以參考下
    2019-05-05
  • Blazor實現(xiàn)組件嵌套傳遞值的示例詳解

    Blazor實現(xiàn)組件嵌套傳遞值的示例詳解

    這篇文章主要為大家詳細介紹了Blazor實現(xiàn)組件嵌套傳遞值的相關(guān)知識,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下
    2023-02-02
  • XMind?2021激活碼及安裝步驟

    XMind?2021激活碼及安裝步驟

    XMind?是一款非常實用的商業(yè)思維導圖,應用Eclipse?RCP?開發(fā)架構(gòu),打造易用、高效的可視化思維,強調(diào)該功能的可擴展、跨平臺、穩(wěn)定性和性能,致力于幫助用戶提高生產(chǎn)率。本文給大家?guī)砹薠Mind?2021激活碼,需要的朋友可以參考下
    2021-12-12
  • Git版本控制服務器詳解

    Git版本控制服務器詳解

    這篇文章主要為大家介紹了Git版本控制服務器詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Git常用命令介紹

    Git常用命令介紹

    Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。這篇文章介紹了Git的常用命令,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01

最新評論

青岛市| 石狮市| 合肥市| 青海省| 永康市| 郸城县| 辽宁省| 特克斯县| 贵州省| 府谷县| 中超| 桐庐县| 余庆县| 日照市| 河源市| 平度市| 读书| 惠安县| 彭山县| 三河市| 建阳市| 松滋市| 兴山县| 曲麻莱县| 丽江市| 兰西县| 罗甸县| 景德镇市| 会东县| 苏尼特左旗| 临夏县| 利川市| 庆城县| 德安县| 宣威市| 堆龙德庆县| 宁津县| 鲜城| 宣武区| 台北市| 临海市|