精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

一区一区三区| 亚洲第一页综合| 热久久天天拍国产| 7777精品伊人久久久大香线蕉经典版下载 | 日韩午夜在线观看| 每日在线更新av| 免费人成在线观看播放视频| 国产精品系列在线观看| 欧美又大又粗又长| 你懂得在线观看| 欧美xxxx在线| 69p69国产精品| 毛片一区二区三区四区| h网站久久久| 91麻豆国产福利精品| 91丨九色丨国产在线| 久久草视频在线| 日韩在线欧美| 日韩高清av一区二区三区| 天天干天天综合| 男女羞羞在线观看| 亚洲美女在线国产| 手机成人在线| 午夜视频福利在线| 国产毛片精品视频| 国产精品久久久久久久一区探花| 国产一级免费观看| 性欧美欧美巨大69| 中文国产成人精品久久一| 国产日韩视频一区| 精品欧美视频| 欧美日韩精品一区二区三区| 欧美日韩国产三级| 亚洲网站在线观看| www.555国产精品免费| 欧美视频免费看| 日本久久精品电影| 高清在线观看免费| 牛牛电影国产一区二区| 中文字幕欧美一区| 亚洲精品欧洲精品| h视频在线免费| 久久综合狠狠综合| 国产专区一区二区三区| 丰满岳乱妇国产精品一区| 激情欧美一区二区三区在线观看| 国产精品狼人色视频一区| 国语对白永久免费| 国产日韩欧美高清免费| 欧美精品九九久久| 免费人成在线观看| 中文字幕日韩一区二区不卡| 色天天综合狠狠色| 亚洲色图欧美色| 成人免费av| 最近中文字幕mv在线一区二区三区四区| 97人妻精品一区二区三区免| 国内精品偷拍| 亚洲精品wwww| 草草影院第一页| 外国成人在线视频| 亚洲欧美精品suv| 国产福利短视频| 免费观看不卡av| 亚洲午夜色婷婷在线| 公肉吊粗大爽色翁浪妇视频| 欧美午夜精彩| 久久精品视频亚洲| 黑人巨大精品一区二区在线| 欧美日本一区| 亚洲97在线观看| www.av麻豆| 久久国产精品久久w女人spa| 国产精品r级在线| 亚洲天堂2021av| 精油按摩中文字幕久久| 亚洲精品日韩激情在线电影| 不卡的日韩av| 99久久精品国产网站| 蜜桃av噜噜一区二区三| av福利精品| 亚洲乱码中文字幕| 欧美一级片免费播放| 天堂av在线网| 欧美日韩情趣电影| 人妻体体内射精一区二区| 国产精品对白久久久久粗| 亚洲精品视频在线播放| 呻吟揉丰满对白91乃国产区| 欧美va天堂在线| 91成人精品网站| 中文字幕人妻一区二区在线视频 | 日韩av免费看| 在线观看免费高清视频| 国产精品综合一区二区| 免费精品视频一区二区三区| 色视频在线免费观看| 亚洲国产一区二区视频| 黄色高清无遮挡| 久久九九精品视频| 亚洲欧美制服综合另类| av成人免费网站| 久久电影一区| 成人性色av| 69av亚洲| 欧美日韩亚洲精品内裤| 手机av在线网| 妖精视频一区二区三区免费观看 | 免费污视频在线观看| 日本韩国欧美一区二区三区| 日本亚洲一区二区三区| 国产成人一区二区三区影院| 不卡av电影院| 国产精品成人无码| 99re亚洲国产精品| 免费在线精品视频| 经典三级一区二区| 亚洲国产精品va在看黑人| 人与动物性xxxx| 久久国产直播| 国产自产精品| 欧美videossex| 欧美日韩国产另类一区| av网站免费在线播放| 激情婷婷久久| 91久久久一线二线三线品牌| h网站视频在线观看| 色狠狠桃花综合| 97香蕉碰碰人妻国产欧美| 亚洲精品2区| 国产精品丝袜白浆摸在线| 日本福利午夜视频在线| 精品高清美女精品国产区| 日本人妻一区二区三区| 亚洲乱码电影| 国产乱肥老妇国产一区二| 国产天堂在线| 色婷婷综合在线| 国产免费a级片| 欧美人成在线| 国产精品theporn88| 1stkiss在线漫画| 91精品国产综合久久婷婷香蕉 | 国产精品一区二区无码对白| 伊人久久大香线| 亚洲伊人第一页| 成人福利片网站| 欧美一区二区三区视频免费播放 | 粉嫩一区二区三区国产精品| 一本色道久久综合亚洲aⅴ蜜桃 | 免费成人av| 国产精品99导航| 国产乱理伦片a级在线观看| 色狠狠色狠狠综合| 久久免费手机视频| 久久精品国产一区二区三| 亚洲第一综合| 91精品福利观看| 美女撒尿一区二区三区| 亚洲国产精品久久久久久6q| 亚洲一区二区在线观看视频| 国产精品熟妇一区二区三区四区| 亚洲激情黄色| 久久综合一区| 久久99国产精品二区高清软件| 中文字幕一精品亚洲无线一区 | 亚洲精品中文字幕有码专区| 男人天堂2024| 国产精品素人视频| 亚洲欧美aaa| 影音先锋亚洲电影| 国内精品视频免费| 欧美日韩成人影院| 色诱女教师一区二区三区| 国产精品怡红院| 午夜在线成人av| 成人免费毛片糖心| 久久99九九99精品| youjizz.com在线观看| 欧美亚洲大陆| 国产精品一区二区久久精品| h片在线观看网站| 日韩hd视频在线观看| 加勒比在线一区| 亚洲欧美一区二区三区极速播放 | 亚洲天堂一二三| 亚洲黄色av一区| 亚洲制服丝袜在线播放| 日本v片在线高清不卡在线观看| 视频一区二区视频| 欧美美女黄色| 成人妇女淫片aaaa视频| 理论片午夜视频在线观看| 中文字幕欧美日韩| 蜜桃视频在线观看www| 欧美日韩中文另类| 精品无码黑人又粗又大又长| 国产午夜精品美女毛片视频| 无人码人妻一区二区三区免费| 日韩一级欧洲| 一区二区日本伦理| 日本中文字幕在线一区| 国产精品日韩在线| 9999热视频在线观看| 中文字幕精品www乱入免费视频| 亚洲大尺度视频| 欧美三级韩国三级日本三斤| 久久久久久久9999| 国产精品国产三级国产aⅴ无密码| 影音先锋黄色资源| 国产一区二区三区在线看麻豆| 日日摸日日碰夜夜爽av| 欧美成人一品| 一区二区三区电影| 欧美人与拘性视交免费看| 99porn视频在线| 久久亚洲精品人成综合网| 6080yy精品一区二区三区| 国产在线看片| 色老头一区二区三区| 水莓100在线视频| 欧美岛国在线观看| 91 中文字幕| 日本精品一级二级| 国产成人精品一区二三区| 亚洲老司机在线| 永久av免费网站| 亚洲国产电影在线观看| 亚洲第一页av| 99国产麻豆精品| 激情综合激情五月| 国产二区国产一区在线观看| 91高清国产视频| 麻豆视频一区二区| 欧美日韩亚洲自拍| 青青草视频一区| 午夜精品久久久内射近拍高清| 亚洲区第一页| 成人在线播放网址| 国内久久视频| av在线com| 国产精品mm| bt天堂新版中文在线地址| 欧美人成网站| 国产日韩欧美精品在线观看| 亚洲国产91| 99在线精品免费视频| 9久re热视频在线精品| 国产色一区二区三区| 精品96久久久久久中文字幕无| 国产1区2区3区中文字幕| 欧美亚韩一区| 国产黄色片免费在线观看| 99在线热播精品免费99热| 男人靠女人免费视频网站| 中文在线不卡| 无码精品国产一区二区三区免费| 另类图片国产| 国产一区二区在线免费播放| 七七婷婷婷婷精品国产| 邪恶网站在线观看| 国产一区视频在线看| 色诱av手机版| 91在线观看视频| 一级黄色录像毛片| 国产嫩草影院久久久久| 日本美女黄色一级片| 一区二区三区在线视频播放| 久久久久久欧美精品se一二三四| 天天色综合天天| 69视频免费看| 7777精品伊人久久久大香线蕉的| 精品欧美在线观看| 亚洲国产精品人人爽夜夜爽| 国产中文在线视频| 久久五月情影视| 国产h片在线观看| 国产精品aaaa| 国产精品一区二区三区www| 国产精品久久亚洲| 狠狠色丁香婷婷综合影院| 中文字幕一区二区中文字幕| 国产精品va| 91视频免费版污| 国产乱国产乱300精品| 成人免费毛片日本片视频| 国产视频在线观看一区二区三区| 性生交大片免费全黄| 亚洲国产日韩a在线播放性色| 男人天堂av在线播放| 日韩一二三区视频| 国产资源在线看| 欧美激情高清视频| 免费在线观看一区| 国产精品v欧美精品∨日韩| 国产欧美日韩精品一区二区免费 | 国产传媒国产传媒| 一区二区三区欧美| 性高潮视频在线观看| 日韩美女视频在线| 成人精品福利| 午夜精品福利电影| 中文成人在线| 欧洲亚洲一区二区三区四区五区| 午夜精品久久| 粉色视频免费看| 99r国产精品| 久久亚洲成人av| 欧美日韩国产一级二级| 三级在线播放| 久久久久久久久久久91| 青草综合视频| 日本免费一区二区三区| 在线播放不卡| 国产xxxxhd| 国产精品免费aⅴ片在线观看| 日韩免费在线视频观看| 欧美一区二区三区色| 最新97超碰在线| 欧美在线视频一区二区| 国产精品丝袜在线播放| 黄色一级片网址| 免费成人你懂的| 天天躁日日躁aaaa视频| 欧美日韩亚洲精品内裤| 手机看片福利在线| 欧美精品福利在线| 成人知道污网站| 精品人妻大屁股白浆无码| 精品制服美女久久| 亚洲一二三四五六区| 欧美在线观看一区二区| 国产对白叫床清晰在线播放| 国产69久久精品成人| 卡通动漫国产精品| 91九色丨porny丨国产jk| 国产白丝精品91爽爽久久 | 国产专区在线| 国产成人综合久久| 国产99亚洲| 久久美女福利视频| 91丨九色丨蝌蚪丨老版| 国产成人亚洲精品自产在线| 日韩电影免费观看中文字幕 | 自拍偷拍欧美| 樱花草www在线| 亚洲乱码日产精品bd| 精品国产九九九| 久久久久久久久久av| 精品国产导航| av网站在线观看不卡| 久久久久久夜精品精品免费| 欧美一级淫片免费视频黄| 亚洲日本成人网| 懂色aⅴ精品一区二区三区| 亚洲欧洲国产精品久久| 国产在线不卡视频| 久草资源在线视频| 亚洲第一免费播放区| 女海盗2成人h版中文字幕| 欧美高清性xxxxhd | 亚洲无人区码一码二码三码| 亚洲成年人影院| 日本高清中文字幕二区在线| 国产精品久久久久久久久男| 亚洲草久电影| 五月天丁香社区| 欧美性猛交xxxx免费看漫画| 成人av毛片| 成人h视频在线观看| 亚洲一区二区三区四区五区午夜 | 亚洲一区二区三区四区在线观看 | 最新的欧美黄色| 免费一区二区三区在线视频| av在线播放天堂| 久久精品一区二区三区av| 亚洲天堂一二三| 久久久在线观看| 精品免费av| www.日本久久| 一本色道**综合亚洲精品蜜桃冫| av午夜在线| 国产乱子伦精品| 日韩精品欧美精品| 欧美成欧美va| 亚洲毛片在线看| 国产麻豆一区二区三区| 黄网站欧美内射| 国产精品久久久久一区| 免费观看a视频| 国产精品视频一区二区三区四| 国产精品大片| 蜜桃av.com| 亚洲欧美日韩精品久久亚洲区| 婷婷久久综合九色综合99蜜桃| 欧美视频免费看欧美视频| 国产精品国产三级国产aⅴ入口| 日韩一卡二卡在线| 国产日韩一区在线| 国产精品亚洲综合久久|