欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

RabbitMQ消息丟失問題和保證消息可靠性之消費端不丟消息和HA的示例分析

RabbitMQ消息丟失問題和保證消息可靠性之消費端不丟消息和HA的示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

站在用戶的角度思考問題,與客戶深入溝通,找到內蒙古網站設計與內蒙古網站推廣的解決方案,憑借多年的經驗,讓設計與互聯(lián)網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網站、網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣、域名申請虛擬主機、企業(yè)郵箱。業(yè)務覆蓋內蒙古地區(qū)。

上面兩個操作保證消息到服務端不丟,但是非高可用狀態(tài),如果節(jié)點掛掉,服務暫時不可用,需要重啟后,消息恢復,消息不會丟失,因為有磁盤存儲。

本文先從消費端講起:

RabbitMQ Server到消費者消息如何不丟?

上面一篇文章也提到了,消費者獲取到消息之后,沒有來得及處理完畢,自己直接宕機了,因為消息者默認采用自動ack,此時RabbitMQ的自動ack機制會通知MQ Server這條消息已經處理好了,此時消息就丟了,并不是預期的。

那么我們采用手動ack機制來解決這個問題,消費端處理完邏輯之后再通知MQ Server,這樣消費者沒處理完消息不會發(fā)送ack,如果在消費者拿到消息,沒來得及處理的情況下自己掛了,此時MQ集群會自動感知到,它就會自覺的重發(fā)消息給其他的消費者服務實例。

根據上面的思路你需要完成下面的兩步操作:

第一:消費者監(jiān)聽設置手動ack

  this.channel = channelManager.getListenerChannel(namespace);
  this.queue = queue;
  this.channel.basicConsume(queue, false, consumerTag, this);
  this.disconnectedCallback.setChannel(channel);

核心代碼: this.channel.basicConsume(queue, false, consumerTag, this); 第二個參數設置 false 代表不自動ack

第二:業(yè)務執(zhí)行完成后手動ack

public static void ack(MessageContext context) {
        long deliveryTag = context.getEnvelope().getDeliveryTag();
        try {
            context.getChannel().basicAck(deliveryTag, false);
        } catch (IOException e) {
            throw new MqAckException("消息ack出錯:連接異?;蜻h端關閉", context, e);
        }
    }

核心代碼: context.getChannel().basicAck(deliveryTag, false);

這里封裝來,需要業(yè)務在執(zhí)行完自己的業(yè)務代碼后,調用對象channel 的ack方法通知MQServer,說我這邊執(zhí)行完了,你可以刪除了。

注意這里有個問題:如果忘記調用這個 context.getChannel().basicAck(deliveryTag, false);

或者因為代碼異常,這個代碼沒被執(zhí)行,會怎么樣?后面找時間再寫一篇文章講這個問題。

RabbitMQ Server中存儲的消息高可用

當我們解決了,生產端和消費端的問題后,基本保證消息的不丟問題,但是還有一個是消息的高可用問題,單節(jié)點問題,普通節(jié)點的問題都會影響消息的臨時不可用,這個時候要用上我們的HA 鏡像集群模式來保證。

上一篇文章 解決RabbitMQ消息丟失問題和保證消息可靠性(一) 已經提到過,服務端消息部署的三種模式的區(qū)別,今天就專門講鏡像模式的介紹。

鏡像模式至少采用3節(jié)點,2個磁盤節(jié)點和1個內存節(jié)點來保證,架構圖:

RabbitMQ消息丟失問題和保證消息可靠性之消費端不丟消息和HA的示例分析

設置鏡像也有一些策略:

  • 同步至所有的,一般不這么做,性能會受到極大影響

  • 同步最多N個機器

  • 只同步至符合指定名稱的nodes

> 命令處理HA策略模版:rabbitmqctl set_policy [-p Vhost] Name Pattern Definition [Priority]

  1. 為每個以“rock.wechat”開頭的隊列設置所有節(jié)點的鏡像,并且設置為自動同步模式

rabbitmqctl set_policy ha-all "^rock.wechat" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
rabbitmqctl set_policy -p rock ha-all "^rock.wechat" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
  1. 為每個以“rock.wechat.”開頭的隊列設置兩個節(jié)點的鏡像,并且設置為自動同步模式

rabbitmqctl set_policy -p rock ha-exacly "^rock.wechat" \
'{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'
  1. 為每個以“node.”開頭的隊列分配指定的節(jié)點做鏡像

rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["rabbit@nodeA", "rabbit@nodeB"]}'

> 但是:HA 鏡像隊列有一個很大的缺點就是: 系統(tǒng)的吞吐量會有所下降

所以采用鏡像模式,要根據具體的業(yè)務規(guī)則定制話處理,沒那么重要的業(yè)務,消息丟了也沒關系的場景,又要求必須高的性能的時候,鏡像也可以不用設置。

關于RabbitMQ消息丟失問題和保證消息可靠性之消費端不丟消息和HA的示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。

文章標題:RabbitMQ消息丟失問題和保證消息可靠性之消費端不丟消息和HA的示例分析
URL鏈接:http://aaarwkj.com/article44/pjccee.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供響應式網站、網站營銷、網站排名外貿建站、品牌網站建設、標簽優(yōu)化

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
99热这里只有精品网址| 日本少妇人妻中文字幕| 国产免费观看久久黄av片涩av| 无套内谢少妇高朝毛片| 6080yy精品一区二区三区| 91精品夜夜夜一区二区| 正在播放日韩黄色精品| 欧美福利在线观看视频| 成年人免费观看黄色片| 国产91高清在线观看| 日韩精品在线不卡一区| 人妻中文字幕视频在线| 国产操大奶头女人自拍av| 中文字幕一区中出爽亚洲| 日韩版色视频在线观看| 国产一区二区不卡在线播放 | 日韩一区不卡在线观看| 国产亚洲理论片在线观看| 在线日韩观看免费av| 亚洲国产精品日韩专区av有中文 | 黄片在线免费在线播放| 国产精品亚洲精品日韩在线| 91精品产综合久久香蕉| 中文字幕中出亚洲精品| 日韩欧美人妻一二三四区| av免费在线观看大全| 国产欧美日韩一级二级三级| 91麻豆精品一区二区三区| 国产一区在线视频无卡顿| 一二区中文字幕在线观看| 风韵丰满熟妇啪啪老熟女| 亚洲人妻一区二区三区久久精品| 日韩精品免费一区二区三区| 日本一区二区三区不卡在线| 91精品国产综合久久麻豆| 国产三级黄在线观看| 国产美女主播视频一区二区三区| 男男啪啪猛进猛出无遮挡| 亚洲乱色熟女一区二区三区麻豆| 久久精品国产成人综合| 日本一区二区三区免费看视频|