精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

RocketMQ 用法詳解,你學會了嗎?

開發 架構
正常情況下生產者組是沒有作用的,但是在發送事務消息時,如果producer中途意外宕機,broker會主動回調producer group 內的任意一臺機器來確認事務的狀態。

大家好,我是指北君。

圖片

消息中間件是我們工作中使用最頻繁的一類中間件,它具有低耦合、可靠投遞、廣播、流量控制、最終一致性等一系列功能,成為異步RPC的主要手段之一。當今市面上有很多主流的消息中間件,如老牌的ActiveMQ、RabbitMQ,炙手可熱的Kafka,阿里巴巴自主開發RocketMQ等。今天,指北君就來詳細講講RocketMQ生產者和消費者在使用時的一些注意事項。

一. 生產者

1.1 發送消息注意事項

1)消息大小

建議消息大小不要超過512K。

2)異步發送

默認的發送為同步發送,send方法會一直阻塞,等待broker端的響應。如果你關注性能問題,可以通過send(msg, callback)來發起異步調用。

3)生產者組

正常情況下生產者組是沒有作用的,但是在發送事務消息時,如果producer中途意外宕機,broker會主動回調producer group 內的任意一臺機器來確認事務的狀態。(目前開源版本還不支持事務消息)。

4)線程安全問題

生產者實例是線程安全的,在應用中只需要實例化一次即可。

5)性能問題

如果你希望在一個jvm進程內使用多個producer實例來提高發送能,我們建議:

使用異步發送,并且producer實例只需要3 ~ 5個即可 對每一個producer 調用 setInstanceName,區別不同的生產者。

6)發送超時時間

當客戶端向broker發送請求超時時,客戶端會拋出 RemotingTimeoutException,默認的超時時間是3秒。通過調用send(msg, timeout) 可以設置超時時間。超時時間建議不要設置過小,因為 broker 可能需要時間刷盤或向 slave 同步數據。

7)對于同一個應用最好只使用一個Topic,消息的子類型可以使用 tags 來標識,tags 可以由應用自由設置。當發送的消息設置了 tags 時,消費方在訂閱消息時可以使用 tags 在 broker 做消息過濾。注意這里的命名雖然是復數,但是一條消息只能有一個tag。

8)消息在業務層面的唯一標識可以設置到 keys 字段,方便根據 keys 來定位消息。broker 會為每個消息創建索引(哈希索引),應用可以通過topic 、key 查詢這條消息的內容(MessageExt),以及消息被誰消費(MessageTrack,精確到consumer group)。由于是哈希索引,請盡量保證key 的唯一,這樣可以避免潛在的哈希沖突。

9)消息發送不管是成功還是失敗都要打印消息日志,日志內容務必包含 sendResult 和 key 字段。

10)對于消息不可丟失的應用,務必要有消息重發機制。例如如果消息發送失敗,可以將消息存儲到數據庫,然后通過定時程序或者人工的方式觸發重發。

11)調用send 同步發送消息時,假定此時設置了 isWaitStoreMsgOK=true(default is true),只要不拋出異常就代表發送成功,但當 isWaitStoreMsgOK = false 時,發送永遠返回 SEND_OK。但是對于發送“成功”會有多個狀態,在 SendStatus 中定義如下:

FLUSH_DISK_TIMEOUT

如果 broker 設置的 FlushDiskType = SYNC_FLUSH,當 broker 的在刷盤超時時(MessageStoreConfig.syncFlushTimeout,默認5秒)會返回該狀態。此時消息任然保存在內存中,只有broker 宕機時消息才會丟失。

FLUSH_SLAVE_TIMEOU

如果 broker 的 role 是 SYNC_MASTER,當 slave 同步數據的時間超過了 MessageStoreConfig.syncFlushTimeout (默認5秒) 時會返回此狀態。此時只有主從都宕機,并且主也沒有刷盤時,消息才會丟失。

SLAVE_NOT_AVAILABLE

如果 broker 的 role 是 SYNC_MASTER,并且此時 slave 不可用時會返回該狀態。

SEND_OK

發送成功。為了保證消息不丟失還需要配置 SYNC_MASTER or SYNC_FLUSH。

12)消息重復

當發送消息時返回 FLUSH_DISK_TIMEOUT/FLUSH_SLAVE_TIMEOUT,若非常不幸的 broker 也宕機了,消息將會丟失。此時如果什么都不做,消息可能會丟失,如果重發消息,消息可能會出現重復。

通常我們建議發送端重發消息,由消費方來保證消息消費的冪等性。

1.2 消息發送失敗如何處理

Producer 的 send 方法本生支持內部重試,重試邏輯如下:

至多重試3次 如果發送失敗,則輪轉到下一個broker 這個方法的總耗時時間不超過 sendMsgTimeout,默認3秒 所以發送消息已經產生超時異常的話就不會再重試。以上策略仍不能保證消息發送一定成功,為保證消息發送一定成功,建議應用這么做:如果調用 send 同步發送失敗,則嘗試將消息存儲到db,由后臺線程定時重試,保證消息一定到達 Broker。

1.3 oneway 的發送形式

對于可靠性要求不高的應用,可以采用 oneway 的發送形式,oneway 形式不等待應答。

1.4 發送順序消息

順序消息分為分區有序和全局有序。

分區有序要求 producer 在send 時傳入 MessageQueueSelector 的實現類,最終將某一類消息發送到同一隊列。但是一旦發生通信異常、broker 重啟等,由于隊列總數發生變化,哈希取模后定位的隊列會變化,會產生短暫的順序不一致。如果業務能容忍在集群異常情況下(如某個 broker 宕機或者重啟)消息短暫的亂序,使用分區有序比較合適。

全局嚴格有序的消息即便在異常情況下也能保證消息的有序性,但是卻犧牲了分布式的 failover 特性,即 broker 集群中只有要一臺機器不可用,則整個集群都不可用,服務可用性會大大降低。

順序消息的缺點:

發送順序消息無法利用集群的 FailOver 特性 消費順序消息的并行度依賴于隊列數量 隊列熱點問題,個別隊列由于哈希不均導致消息過多,消費速度跟不上,產生消費堆積問題 遇到消費失敗的消息,無法跳過,當前隊列需要暫停 5.發送事務消息 目前暫不支持。

二. 消費者

2.1 消費者組和訂閱

不同的消費者組可以獨立消費相同的topic,這點類似于ActiveMQ的虛擬 topic. 另外對于相同的消費者組,需要確保組內的消費者訂閱消息的規則是一致的!

MQ 里的一個Consumer Group 代表一個 Consumer 實例群組。對于大多數分布式應用來說,一個 Consumer Group 下通常會掛載多個 Consumer 實例。訂閱關系一致指的是同一個 Consumer Group 下所有 Consumer 實例的處理邏輯必須完全一致。一旦訂閱關系不一致,消息消費的邏輯就會混亂,甚至導致消息丟失。

由于 MQ 的訂閱關系主要由 Topic+Tag 共同組成,因此,保持訂閱關系一致意味著同一個 Consumer Group 下所有的實例需在以下兩方面均保持一致:

訂閱的 Topic 必須一致;訂閱的 Topic 中的 Tag 必須一致。

技術架構 > Consumer 最佳實踐 > image2017-11-15 15:50:13.png

2.2 MessageListener

1)順序消費 MessageListenerOrderly

順序消費時消費者會鎖定隊列,以確保消息被順序消費,但是這樣也會造成一定的性能損耗。當消費出現異常的時候,建議不要拋出異常,而是返回 ConsumeOrderlyStatus.SUSPEND_CURRENT_QUEUE_A_MOMENT,讓消費暫停一會,暫停時間由 context.setSuspendCurrentQueueTimeMillis 方法指定。

2)并發消費

并發消費是推薦的消費方式,在此種模式下,消息將被并發的消費。消費出現異常時不建議拋出異常,只需要返回 ConsumeConcurrentlyStatus.RECONSUME_LATER 即可。為了保證消息肯定被至少消費一次,消息將會被重發回 broker (topic不是原topic而是這個消費組的RETRY topic),在延遲的某個時間點(默認是10秒,業務可設置,通過 delayLevelWhenNextConsume 和 MessageStoreConfig.messageDelayLevel 設置)后,再次投遞到這個 ConsumerGroup,而如果一直這樣重復消費都持續失敗到一定次數(默認是16次,DefaultMQPushConsumer.maxReconsumeTimes),就會投遞到DLQ隊列。應用可以監控死信隊列來做人工干預。

3)返回狀態

在并行消費時可以通過返回 RECONSUME_LATER 來告訴 Consumer 當前無法消費該消息,等延時一段時間再重新消費,但是此時消費不會停止,你可以繼續消費其他消息。但在順序消費時,因為要保證消費的順序性,所以你不能跳過失敗的消息,此時你可以通過返回 SUSPEND_CURRENT_QUEUE_A_MOMENT 來告訴 Consumer 先暫停一會。

4)阻塞

不建議阻塞Listener,因為這會阻塞住線程池,同時也有可能造成消費者線程終止。

2.3 線程數

consumer 內部通過一個 ThreadPoolExecutor 來消費消息,可以通過 setConsumeThreadMin 和 setConsumeThreadMax 來改變線程池的大小。

2.4 ConsumeFromWhere

當新實例啟動的時候,PushConsumer會拿到本消費組broker已經記錄好的消費進度(consumer offset),按照這個進度發起自己的第一次Pull請求。

如果這個消費進度在Broker并沒有存儲起來,證明這個是一個全新的消費組,這時候客戶端有幾個策略可以選擇:

CONSUME_FROM_LAST_OFFSET //默認策略,從該隊列最尾開始消費,即跳過歷史消息。

CONSUME_FROM_FIRST_OFFSET //從隊列最開始開始消費,即歷史消息(還儲存在broker的)全部消費一遍。

CONSUME_FROM_TIMESTAMP//從某個時間點開始消費,和setConsumeTimestamp()配合使用,默認是半個小時以前 注意:這些配置只對全新的消費組有效,老的消費組都是按已經存儲過的消費進度繼續消費。

對于老消費組想跳過歷史消息可以采用以下幾種方法:

1)判斷消息的發送時間,太老的消息直接返回 CONSUME_SUCCESS。

2)判斷消息的 offset 和 MAX_OFFSET 的差距,如果落后太多,可以直接。返回 CONSUME_SUCCESS。

3)消費者啟動前,先調整該消費組的消費進度,再開始消費。可以人工使用命令 resetOffsetByTimeStamp,詳見 ResetOffsetByTimeCommand.java。

2.5 消息冪等

由于 RocketMQ 無法避免消費重復,所以如果業務對消息重復非常敏感,務必在業務層面去重。

2.6 消費速度慢處理方式

1)提高消費并行度

大部分消息消費行為都屬于 IO 密集型業務,適當的提高并發度可以顯著的改善消費的吞吐量。

2)批量方式消費

默認情況下 consumer 的 consumeMessageBatchMaxSize 為1,即一次只消費一個消息,如果應用可以批量消費消息,則可以很大程度上提高消費吞吐量。

3)跳過非重要消息

當消堆積嚴重時可以丟棄不重要的消息。

4)優化消息消費過程

2.7 打印消費日志

建議在消費入口方法打印消息,方便后續排查問題,消費失敗時也打印失敗日志。

2.8 利用broker過濾消息,避免多余的消息傳輸

三. 小結

好了,RocketMQ生產者與消費者的使用事項就總結完畢了,相信大家對RocketMQ的使用應該會更有信心了。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2024-02-04 00:00:00

Effect數據組件

2024-01-02 12:05:26

Java并發編程

2024-10-11 09:15:33

2023-07-03 07:20:50

2023-03-26 22:31:29

2022-12-06 07:53:33

MySQL索引B+樹

2022-12-06 08:37:43

2022-04-26 08:41:54

JDK動態代理方法

2022-04-13 09:01:45

SASSCSS處理器

2023-09-06 11:31:24

MERGE用法SQL

2023-08-08 08:23:08

Spring日志?線程池

2024-09-10 10:34:48

2024-12-31 00:08:37

C#語言dynamic?

2024-08-12 08:12:38

2024-10-12 10:25:15

2023-03-09 07:38:58

static關鍵字狀態

2023-05-18 09:01:11

MBRGPT分區

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2023-07-26 13:11:21

ChatGPT平臺工具
點贊
收藏

51CTO技術棧公眾號

一区二区三区四区在线播放| 国产欧美短视频| 8v天堂国产在线一区二区| 加勒比海盗1在线观看免费国语版| 亚洲精品中文字幕成人片| 国产日韩精品视频一区二区三区 | 成人一区二区三| 免费a级在线播放| 成人成人成人在线视频| 国产精品精品久久久| 一区二区视频免费看| 日韩中出av| 91精品国产综合久久久久久久 | 日韩一级片在线播放| 97国产精东麻豆人妻电影| yourporn在线观看视频| 成人免费视频播放| 成人精品网站在线观看| 天天操天天操天天操天天| 91精品国产自产拍在线观看蜜| 亚洲激情自拍图| 伊人色在线视频| 秋霞国产精品| 精品久久久久久亚洲国产300 | 91网站免费入口| 天堂av一区| 欧美日产国产精品| 国产无套内射久久久国产| 午夜伦理在线视频| 国产精品美女久久久久aⅴ国产馆| 九九久久99| 性欧美一区二区三区| 免费在线成人网| 欧美在线观看网站| 日本中文字幕免费观看| 欧美日韩天堂| 欧美成人精品一区| 欧美风情第一页| 欧美一区二区性| 亚洲欧洲日产国产网站| 国产麻豆xxxvideo实拍| 国产精品毛片av| 日韩精品资源二区在线| www.亚洲自拍| 91精品一区| 欧美精品777| 亚洲 国产 图片| 亚洲精品成a人ⅴ香蕉片| 欧美性大战久久久久久久| www黄色av| av高清不卡| 一本一道综合狠狠老| 欧美亚洲另类色图| 欧美gay视频| 在线观看日韩国产| 超碰在线97免费| 福利一区在线| 9191久久久久久久久久久| 小泽玛利亚视频在线观看| 成人全视频在线观看在线播放高清| 一本久久a久久免费精品不卡| 欧美色图另类小说| 亚洲第一影院| 欧美日韩小视频| 网站在线你懂的| av男人一区| 亚洲精品电影网站| 五月天综合视频| 欧美激情另类| 欧美精品18videos性欧| 欧美亚韩一区二区三区| 中文亚洲免费| 国产精品久久久久久久久免费看 | 久久99九九99精品| 91九色在线视频| 亚洲AV无码成人片在线观看| 不卡的av在线| 日产中文字幕在线精品一区| 亚洲成a人v欧美综合天堂麻豆| 综合在线观看色| av一区二区三区免费观看| gogo高清午夜人体在线| 91黄色免费网站| 免费av不卡在线| 97久久综合区小说区图片区| 精品视频www| 国产成人在线网址| 国产精品激情| 国产精品久久久久久久电影| 国产成人av免费看| 久久你懂得1024| 大桥未久一区二区| 性国裸体高清亚洲| 欧美精品日韩一区| 国产精品麻豆入口| 日韩专区精品| 55夜色66夜色国产精品视频| 亚洲天堂网视频| 成人福利视频网站| 五月天色一区| 91九色国产在线播放| 欧美日韩一区不卡| 91丝袜在线观看| 99久久久久| 7777精品久久久久久| 91亚洲视频在线观看| 91色porny蝌蚪| 国产午夜精品视频一区二区三区| 在线观看欧美日韩电影| 欧美一级理论性理论a| 欧美深性狂猛ⅹxxx深喉| 午夜欧美在线| 国产福利精品视频| 神马午夜一区二区| 亚洲女同女同女同女同女同69| 可以在线看的黄色网址| 亚洲欧美日本国产| 日韩在线观看免费全| 中文字幕视频网| 国产999精品久久| 色撸撸在线观看| 外国电影一区二区| 亚洲欧美制服丝袜| 自拍偷拍欧美亚洲| 床上的激情91.| 色呦呦网站入口| 99久久er| 国产一区二区三区在线播放免费观看 | 午夜精品久久久内射近拍高清| 亚洲视频精选| 欧美大胆在线视频| 国产露脸91国语对白| 欧美激情综合网| 青青青在线播放| 久久精品色播| 高清视频欧美一级| 亚洲第一页视频| 亚洲美女在线国产| 一区二区久久精品| 婷婷综合亚洲| 91免费精品国偷自产在线| 免费大片黄在线观看视频网站| 91精品91久久久中77777| 精品国产av无码| 亚洲一区激情| 久久久久网址| 一区一区三区| 亚洲欧美资源在线| 天堂网中文字幕| 国产亚洲欧美色| 国产天堂在线播放| 亚洲精品动态| 国产精品欧美激情在线播放| 成人免费在线电影| 欧美日韩一区中文字幕| 女同久久另类69精品国产| 久久激情五月婷婷| 色撸撸在线观看| 日本久久伊人| 欧美精品激情在线观看| 天天操天天干天天插| 岛国av一区二区在线在线观看| av鲁丝一区鲁丝二区鲁丝三区| 国产视频久久| 欧美一区二区三区四区夜夜大片| 日韩高清成人| 久久精品国产99国产精品澳门| 国产黄色av网站| 精品久久久久久久大神国产| 无码人妻精品一区二区中文| 日本中文字幕一区二区有限公司| 在线视频91| 999国产精品一区| 2019中文字幕免费视频| 国产午夜在线视频| 欧美一级欧美一级在线播放| 日产亚洲一区二区三区| 久久久另类综合| 91网址在线观看精品| 亚洲人成久久| 亚洲aⅴ天堂av在线电影软件| 激情不卡一区二区三区视频在线| 久久久久久97| wwwww在线观看免费视频| 欧美一区二区三区视频在线观看| 日本一级淫片免费放| 久久精品男人天堂av| 日本美女久久久| 香蕉国产精品偷在线观看不卡| 一区二区三区四区视频在线| 9l亚洲国产成人精品一区二三| 国产v综合v亚洲欧美久久| 日本不卡在线| 日韩高清a**址| 国产精品久久久久久久久久久久久久久久久久 | 亚洲大尺度美女在线| 波多野结衣一区二区三区四区| 亚洲免费观看在线视频| 深爱五月激情网| 国产精品996| 五月婷婷深爱五月| 精品电影一区| 正在播放精油久久| 色综合久久中文| 99国产视频| 日韩精品免费观看视频| 亚州国产精品久久久| 看黄网站在线| 亚洲欧洲日本专区| 欧美自拍第一页| 欧美精品一二三| 日韩精品久久久久久久| 亚洲日本青草视频在线怡红院| 日韩精品卡通动漫网站| 国产成人高清在线| 国产精品久久a| 麻豆九一精品爱看视频在线观看免费| 奇米777四色影视在线看| 成人在线免费小视频| 久久久精品有限公司| 91精品国产乱码久久久竹菊| 国产欧美婷婷中文| 色8久久影院午夜场| 91av免费观看91av精品在线| 深夜国产在线播放| xxx欧美精品| 成年人在线看| 亚洲视频第一页| 日本在线丨区| 亚洲精品久久久久久久久久久| 午夜精品久久久久久久爽| 7777精品伊人久久久大香线蕉的 | 日本在线一级片| 国产欧美精品一区二区三区四区 | 日本不卡免费播放| 亚洲电影免费观看高清完整版在线观看| 91精品国产综合久| 欧美日韩一区二区三区高清 | 欧洲一区二区日韩在线视频观看免费 | 美女露胸视频在线观看| 久久人人爽人人爽人人片av高清| 日韩免费啪啪| www.亚洲免费视频| 免费黄色在线网站| 精品国产一区二区三区久久久| h网站视频在线观看| 在线精品高清中文字幕| 91caoporn在线| 日韩在线资源网| 伊人免费在线| 久久亚洲精品成人| av大片在线| 欧美激情第99页| bl视频在线免费观看| 97视频在线观看播放| ****av在线网毛片| 欧美一区二区三区……| 成人香蕉视频| 国产精品久久久久久五月尺| 国产精品麻豆成人av电影艾秋| 国产精品吴梦梦| av国产精品| 一区二区三区中文字幕精品精品 | 成人妖精视频yjsp地址| 国产av一区二区三区传媒| av网站一区二区三区| 精品无码在线视频| 日本一区二区三区免费乱视频| 在线观看天堂av| 亚洲一区二区三区爽爽爽爽爽| 国产污视频在线看| 一本大道久久精品懂色aⅴ| 久久午夜鲁丝片| 91精品国产入口在线| 免费看黄网站在线观看| 亚洲欧美一区二区三区四区| 在线免费观看黄| 欧美猛交ⅹxxx乱大交视频| 国产污视频在线播放| 国产精品久久久久久久久久久久久久| 欧美日韩va| 国产日产精品一区二区三区四区| 日韩系列在线| 中文字幕剧情在线观看一区| 国内精品亚洲| 国产精品久久久久9999小说| 国产真实乱偷精品视频免| 国产伦精品一区二区免费| 国产网站一区二区| 青草草在线视频| 欧美性黄网官网| 国产剧情久久久| 亚洲男人天堂2019| 亚洲国产精品精华素| 欧美中在线观看| 国产一区二区三区免费在线| 精品中文字幕人| 久久久久久免费视频| 超碰网在线观看| 国产成人综合网| 中文字幕免费在线看线人动作大片| 亚洲欧美福利一区二区| 天堂网中文字幕| 精品精品国产高清一毛片一天堂| 国产资源在线看| 久久久视频精品| 精品一区二区三区四区五区 | 亚洲h色精品| 99999精品视频| 成人亚洲精品久久久久软件| 五月婷婷婷婷婷| 欧美日韩在线第一页| 99国产精品久久久久99打野战| 亚洲人成网站色ww在线| 成人免费观看在线观看| 亚洲已满18点击进入在线看片| 国产中文字幕一区二区三区| 国产手机免费视频| 国产一区二区三区免费| 超碰人人人人人人人| 欧美性猛交xxxx| 欧美一区二区黄片| 精品中文字幕在线观看| 亚洲男男av| 亚洲欧美久久久久一区二区三区| 亚洲欧美日韩国产| 涩视频在线观看| 亚洲精品视频在线看| 一二三区在线播放| 中文字幕亚洲天堂| 波多结衣在线观看| 成人性视频免费网站| 一区二区在线观看免费视频| 在线成人免费观看| 午夜国产福利在线| 国产精品视频一区二区三区四| 精品五月天堂| 国产中文字幕乱人伦在线观看| 国产福利视频一区二区三区| 永久免费未视频| 8v天堂国产在线一区二区| 拍真实国产伦偷精品| 国产精品视频精品视频| 国产一区二区三区站长工具| 日韩免费毛片视频| 国产欧美日韩精品一区| 特级西西444www大胆免费看| 亚洲性视频网址| 日韩制服一区| 中文网丁香综合网| 国产一区二区视频在线播放| 老女人性淫交视频| 日韩精品一区二| 波多野结衣乳巨码无在线观看| 国产伦精品一区二区三区高清版| 亚洲国产欧美国产综合一区| 中国免费黄色片| 天天综合网 天天综合色| 青青久草在线| 国产精品久久国产精品99gif| 色婷婷热久久| 久久黄色一级视频| 午夜亚洲福利老司机| 青青操在线视频| 国产精品久久久久久久久久ktv| 欧美a级片视频| 精品人妻二区中文字幕| 图片区日韩欧美亚洲| 九一在线视频| 成人网在线视频| 韩日在线一区| 国产在线观看h| 欧美精品v国产精品v日韩精品| 久久www人成免费看片中文| 蜜桃狠狠色伊人亚洲综合网站| 奇米一区二区三区av| 免费三级在线观看| 亚洲缚视频在线观看| yw.尤物在线精品视频| 日韩一级片一区二区| 92精品国产成人观看免费| 特级西西444www高清大视频| 欧美另类xxx| 国产乱码精品一区二区三区四区| 玖玖爱视频在线| 精品电影在线观看| 69xxxx欧美| 国产原创精品| 日韩成人午夜精品| 国产精品18p| 色婷婷av一区二区三区在线观看| 8x国产一区二区三区精品推荐| 久久九九国产视频| 亚洲最新视频在线播放| 国产在线视频资源| 成人三级在线| 激情五月婷婷综合| 成年人免费高清视频| 不卡av在线播放| 国产一区二区三区日韩精品|