国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當前位置:首頁 > 科技  > 軟件

三分鐘白話RocketMQ系列—— 如何發送消息

來源: 責編: 時間:2023-08-05 11:46:05 5298觀看
導讀我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。注意,如果白話中不小心提到相關代碼配置與類名,請參考RocketMQ 4.9.4版本關鍵

我們知道RocketMQ主要分為消息 生產、存儲(消息堆積)、消費 三大塊領域。OTN28資訊網——每日最新資訊28at.com

那接下來,我們白話一下,RocketMQ是如何發送消息的,揭秘消息生產全過程。OTN28資訊網——每日最新資訊28at.com

注意,如果白話中不小心提到相關代碼配置與類名,請參考RocketMQ 4.9.4版本OTN28資訊網——每日最新資訊28at.com

關鍵字摘要

  • 哪些消息類型?
  • 發給誰?
  • 怎么發?
  • 怎么知道發成功了還是失敗了?
  • 發失敗了怎么辦?

Q1: RocketMQ有哪些消息類型?

RocketMQ生產消息時,支持多種「消息類型」:OTN28資訊網——每日最新資訊28at.com

  • 普通消息:發送普通消息。
SendResult send(final Message msg);
  • 普通有序消息:發送普通有序消息,通過指定「消息篩選器selector」,動態決定發送哪個隊列。
SendResult send(final Message msg, final MessageQueueSelector selector, final Object arg);
  • 嚴格有序消息:發送嚴格有序消息,通過指定隊列,保證嚴格有序。
SendResult send(final Message msg, final MessageQueue mq);
  • 事務消息:實現分布式事務。(屬于分布式事務范疇,區別較大,本文不再展開討論,后面單獨寫一篇針對「事務消息」的分析)

上面列舉的三種send方法,都是以同步發送模式為例。定時/延遲消息從發送方式角度來說,不算一種獨立的消息類型。OTN28資訊網——每日最新資訊28at.com

Q2:RocketMQ怎么知道一條消息要發送給誰?

一般我們要發送一條消息給RocketMQ,需要創建這樣一個消息體。OTN28資訊網——每日最新資訊28at.com

Message msg = new Message( "TestTopic", "Hello World".getBytes() );

在這個消息體里面,我們只單純指定了要發送的Topic名字,以及要發送的消息內容。OTN28資訊網——每日最新資訊28at.com

那么,RocketMQ-client怎么知道這條消息要發送到RocketMQ集群中的哪一個broker上呢?OTN28資訊網——每日最新資訊28at.com

這里需要了解下RocketMQ中Topic的「路由注冊與發現機制」。OTN28資訊網——每日最新資訊28at.com

RocketMQ基本架構RocketMQ基本架構OTN28資訊網——每日最新資訊28at.com

Topic 路由注冊與發現:OTN28資訊網——每日最新資訊28at.com

  • Broker 每30秒向 NameServer 發送心跳包,里面包含Topic的路由信息,包括主題的讀寫隊列數和操作權限等。NameServer會保存這些路由信息,并記錄最后一次收到 Broker 心跳包的時間(NameServer每10秒根據記錄的時間戳清理已經失聯120秒以上的 Broker)。
  • 生產者每30秒獲取一次主題的路由信息。這意味著消息生產者不會立即知道有新的 Broker 加入或者被移除。

Topic路由信息Topic路由信息OTN28資訊網——每日最新資訊28at.com

Topic的路由信息,包括了Topic的 隊列queue和broker的映射關系 ,那么如何利用這個Topic的路由信息呢?OTN28資訊網——每日最新資訊28at.com

我們需要根據前面的不同「消息類型」進行分別討論:OTN28資訊網——每日最新資訊28at.com

  • 普通消息:默認采用輪詢機制,消息會依次發送到Topic的每個可用的 Broker 的某個隊列queue上,以實現負載均衡。
  • 普通有序消息:根據傳遞的 MessageQueueSelector 和消息體 msg 內容,計算可以投遞的隊列queue,然后發送消息。(可以類比分庫分表中的分表計算寫入的方式)
  • 嚴格有序消息:根據傳遞的 MessageQueue 信息,強制消息發送到對應隊列queue上。(可以類比分庫分表中,強制指定物理表寫入的方式)

根據消息類型獲取到目標隊列queue后,就可以根據Topic路由信息發送消息到指定broker上了。OTN28資訊網——每日最新資訊28at.com

Q3:怎么發送一條消息?

從發送模式角度來說,RocketMQ有三種「消息發送模式」:OTN28資訊網——每日最新資訊28at.com

  • 同步發送:調用發送消息方法后,同步阻塞,直到返回SendResult。
SendResult send(final Message msg);
  • 異步發送:調用發送消息方法后,立即返回,發送結果會通過開發者自己注冊的回調函數SendCallback進行處理。
void send(final Message msg, final SendCallback sendCallback);
  • 單向發送:這種方法完全不關心發送后的返回結果。顯然,它具有最大吞吐量,但也存在消息丟失的潛在風險。
void sendOneway(final Message msg);

上面列舉的三種send方法,都是以「普通消息」為例。OTN28資訊網——每日最新資訊28at.com

「消息類型」 和 「消息發送模式」 是 N*M 的關系,所以聰明的你一定已經想到了,存在9種不同組合(不包括事物消息),RocketMQ也是在接口中定義了9種不同方法。OTN28資訊網——每日最新資訊28at.com

Q4: 發送后,怎么知道消息發成功了還是失敗了?

前面介紹了三種「消息發送模式」,其中「單向發送」屬于不可靠發送,我們無法知道是否發送成功。OTN28資訊網——每日最新資訊28at.com

而「同步發送」和「異步發送」都是可靠發送,我們能夠獲取發送狀態,知道是否成功。OTN28資訊網——每日最新資訊28at.com

在「同步發送」中,我們可以根據SendResult中的sendStatus屬性判斷是否發送成功。OTN28資訊網——每日最新資訊28at.com

SendResult類屬性SendResult類屬性OTN28資訊網——每日最新資訊28at.com

在「異步發送」中,我們可以自定義實現SendCallback的onSuccess()方法和onException()方法,來判斷消息是否發送成功。OTN28資訊網——每日最新資訊28at.com

SendCallback接口定義SendCallback接口定義OTN28資訊網——每日最新資訊28at.com

Q5: 消息發送失敗了怎么辦?

如果消息發送失敗了,RocketMQ-client默認有重試機制,以確保消息的高可用性。OTN28資訊網——每日最新資訊28at.com

前面提到,生產者每30秒獲取一次主題的路由信息,所以即使某個 Broker 宕機,消息發送者可能無法立即察覺到它的宕機狀態。OTN28資訊網——每日最新資訊28at.com

但是,當消息發送者向某個 Broker 發送消息后,如果返回異常,生產者會在接下來的一段時間內(例如5分鐘)避免再次選擇該 Broker 上的隊列來發送消息。這樣做的目的是規避可能發生故障的 Broker。OTN28資訊網——每日最新資訊28at.com

當然了,用戶也能根據返回的異常,自己定義業務重試、補償機制。OTN28資訊網——每日最新資訊28at.com

需要注意的是,不同「消息類型」和「消息發送模式」的RocketMQ-client默認重試機制不同。OTN28資訊網——每日最新資訊28at.com

消息類型:OTN28資訊網——每日最新資訊28at.com

  • 普通消息:無順序性要求,異常時RocketMQ-client默認重試。
  • 普通有序消息:異常時RocketMQ-client默認不重試,可以用戶自己捕獲異常重試,并發送到其他隊列。
  • 嚴格有序消息:保證嚴格有序,異常時RocketMQ-client默認不重試,可以用戶自己捕獲異常重試。

注意:有序消息異常時RocketMQ-client都是默認不重試OTN28資訊網——每日最新資訊28at.com

消息發送模式:OTN28資訊網——每日最新資訊28at.com

  • 同步發送:配置retryTimesWhenSendFailed默認重試次數。
  • 異步發送:配置retryTimesWhenSendAsyncFailed默認重試次數。
  • 單向發送:無重試機制,存在丟失消息的風險。

注意:單向發送模式異常時RocketMQ-client默認不重試OTN28資訊網——每日最新資訊28at.com

總結

  • 有哪些消息類型:普通消息、有序消息、事務消息
  • 發給誰?:Topic路由信息注冊與發現機制、普通消息輪詢發送、有序消息指定selector或者queue發送
  • 怎么發?:同步發送、異步發送、單向發送
  • 怎么知道發成功了還是失敗了?:同步&異步都能夠獲取發送狀態(可靠發送)、單向發送不可靠
  • 發失敗了怎么辦?: 失敗重試機制

本文鏈接:http://m.rrqrq.com/showinfo-26-144-0.html三分鐘白話RocketMQ系列—— 如何發送消息

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Webdriver-manager解決瀏覽器與驅動不匹配所帶來自動化無法執行的問題

下一篇: 從零到英雄:高并發與性能優化的神奇之旅

標簽:
  • 熱門焦點
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
欧美一级片在线看| 国产精品videosex极品| 午夜日韩电影| 日韩欧美国产系列| 国产精品人成在线观看免费| 琪琪一区二区三区| 欧美va天堂在线| 老牛嫩草一区二区三区日本| 26uuuu精品一区二区| 香蕉久久夜色精品国产使用方法| 国产成人午夜电影网| 在线亚洲欧美| ww久久中文字幕| 日韩中文字幕av电影| 91老师国产黑色丝袜在线| 一本久久a久久精品亚洲| 国产精品污网站| 国产精品自拍在线| 一本大道久久a久久综合婷婷| 国产欧美一区二区精品性色超碰| 国内精品伊人久久久久av影院| 日韩亚洲在线| 国产女主播视频一区二区| 国产精品一区二区无线| 久久国产福利| 亚洲男同性视频| 欧美韩日精品| 精品久久久久一区| 极品美女销魂一区二区三区免费| 亚洲在线免费| 亚洲免费在线视频一区 二区| 不卡一区二区在线| 538在线一区二区精品国产| 丝瓜av网站精品一区二区| 亚洲精品极品| 国产精品女同一区二区三区| 97久久超碰国产精品电影| 日韩午夜小视频| 国产一区在线不卡| 欧美三级三级三级爽爽爽| 污片在线观看一区二区| 国产亚洲毛片| 亚洲欧美二区三区| 亚洲精品色图| 亚洲美腿欧美偷拍| 精品91视频| 18成人在线观看| 黄色欧美成人| 最新国产精品久久精品| 欧美精品网站| 中文字幕精品在线不卡| 欧美a级在线| 国产欧美一区二区三区网站| 欧美阿v一级看视频| 国产日韩成人精品| 欧美日韩另类丝袜其他| 欧美经典一区二区| 国产一区二区三区四区hd| 亚洲国产精品传媒在线观看| 欧美日本一区| 亚洲精品高清在线| 国产三级精品在线不卡| 亚洲一区中文日韩| 日本韩国精品在线| 精品一区二区三区久久久| 欧美绝品在线观看成人午夜影视| 国产一区二区三区香蕉| 欧美一区二区国产| av在线不卡观看免费观看| 久久久久久久免费视频了| 欧美日韩亚洲一区| 亚洲精品国产第一综合99久久| 亚洲欧美高清| 看电影不卡的网站| 精品欧美乱码久久久久久| 欧美黄色免费| 一二三四区精品视频| 久久综合网络一区二区| 国产中文字幕一区| 久久久久99精品一区| 伊甸园精品99久久久久久| 亚洲国产视频a| 欧美精品在线一区二区| www.亚洲在线| 亚洲日本护士毛茸茸| 六月婷婷一区| 性刺激综合网| 麻豆国产一区二区| 久久久久久久久久久电影| 亚洲国产午夜| 麻豆成人免费电影| 日韩欧美国产一二三区| 亚洲一级网站| 美女网站在线免费欧美精品| 精品久久久久久久久久久院品网| 国产一区二区三区自拍| 免费国产亚洲视频| 国产日韩精品一区二区浪潮av| 国产欧美亚洲一区| 国产一区二区视频在线| 国产精品美女www爽爽爽| 色狠狠综合天天综合综合| a级精品国产片在线观看| 亚洲尤物在线视频观看| 91精品视频网| 亚洲福利专区| 激情六月婷婷综合| 亚洲欧美视频在线观看| 欧美美女直播网站| 亚洲黄色一区二区三区| 国产一区二区精品久久| 国产精品国产三级国产aⅴ入口| 国产一区二区三区四| 欧美aaaaaa午夜精品| 欧美xx69| 欧美成人高清| 欧美福利一区二区三区| 久久精品噜噜噜成人88aⅴ| 亚洲一二三区视频在线观看| 国产精品久久国产精麻豆99网站 | 日韩一区二区免费视频| 欧美日韩亚洲综合在线 | 日本不卡视频一二三区| 亚洲卡通欧美制服中文| 国产精品女同一区二区三区| 亚洲欧美日韩在线| 国产精品日产欧美久久久久| 久久精品亚洲精品国产欧美kt∨| 亚洲一区国产| 久久久久综合一区二区三区| 国产视频一区欧美| 久久精品人人做人人爽电影蜜月| 久久aⅴ国产紧身牛仔裤| 最新亚洲一区| 91豆麻精品91久久久久久| 欧美日韩国产综合一区二区三区| 欧美一区二区黄| 久久久精品2019中文字幕之3| 综合电影一区二区三区| 日韩精品欧美成人高清一区二区| 欧美精品国产| 一二三区精品| 久久综合九色综合97婷婷 | 欧美中文日韩| 91猫先生在线| 国产精品一区二区在线播放| 午夜精品免费在线| 综合久久久久久久| 久久嫩草精品久久久精品一| 欧美精品乱码久久久久久| 久久www成人_看片免费不卡| 亚洲精品国产日韩| 欧美先锋影音| 91麻豆产精品久久久久久| 国产成人av电影在线观看| 精品制服美女久久| 美女网站一区二区| 奇米精品一区二区三区四区| 亚洲国产美女搞黄色| 一区二区三区欧美日| 亚洲色图制服诱惑| 亚洲欧洲精品一区二区三区不卡| 欧美国产欧美亚州国产日韩mv天天看完整| 91麻豆精品国产无毒不卡在线观看| 日本精品裸体写真集在线观看| 亚洲欧美网站| 色诱视频网站一区| 91福利国产精品| 欧美天堂一区二区三区| 欧美色综合网站| 欧美肥妇free| 欧美大胆一级视频| 久久亚洲欧美国产精品乐播| 久久精品一区八戒影视| 久久精品无码一区二区三区| 国产三级精品在线| 亚洲欧洲另类国产综合| 亚洲精品伦理在线| 香蕉久久一区二区不卡无毒影院| 日韩激情一区二区| 久久国产剧场电影| 国产精品亚洲а∨天堂免在线| 狠狠色丁香九九婷婷综合五月| 国产乱国产乱300精品| 成人综合婷婷国产精品久久蜜臀 | 亚洲一区二区三区三| 无吗不卡中文字幕| 国产麻豆成人精品| 91丨九色丨国产丨porny| 国内成人在线| 国产日韩在线一区二区三区| 在线观看日韩电影| 精品日韩欧美在线| 国产精品亲子伦对白| 亚洲成人免费在线观看| 国产一区二区三区四| 欧美在线精品一区| 西西人体一区二区| 91麻豆精品国产自产在线观看一区| 久久久久国产精品厨房|