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

RocketMQ 有哪些消息類型,你知道嗎?

開發(fā) 前端
Consumer的pullBatchSize屬性與consumeMessageBatchMaxSize屬性是否設(shè)置的越大越好?當(dāng)然不是。 pullBatchSize值設(shè)置的越大,Consumer每拉取一次需要的時(shí)間就會(huì)越長,且在網(wǎng)絡(luò)上傳輸出現(xiàn) 問題的可能性就越高。若在拉取過程中若出現(xiàn)了問題,那么本批次所有消息都需要全部重新拉取。

一、普通消息

1 消息發(fā)送分類

Producer對(duì)于消息的發(fā)送方式也有多種選擇,不同的方式會(huì)產(chǎn)生不同的系統(tǒng)效果。

同步發(fā)送消息

同步發(fā)送消息是指,Producer發(fā)出?條消息后,會(huì)在收到MQ返回的ACK之后才發(fā)下?條消息。該方式 的消息可靠性最高,但消息發(fā)送效率太低。

異步發(fā)送消息

異步發(fā)送消息是指,Producer發(fā)出消息后無需等待MQ返回ACK,直接發(fā)送下?條消息。該方式的消息可靠性可以得到保障,消息發(fā)送效率也可以。

單向發(fā)送消息

單向發(fā)送消息是指,Producer僅負(fù)責(zé)發(fā)送消息,不等待、不處理MQ的ACK。該發(fā)送方式時(shí)MQ也不返回ACK。該方式的消息發(fā)送效率最高,但消息可靠性較差。

二、順序消息

1 什么是順序消息

順序消息指的是,嚴(yán)格按照消息的發(fā)送順序進(jìn)行消費(fèi)的消息(FIFO)。

默認(rèn)情況下生產(chǎn)者會(huì)把消息以Round Robin輪詢方式發(fā)送到不同的Queue分區(qū)隊(duì)列;而消費(fèi)消息時(shí)會(huì)從多個(gè)Queue上拉取消息,這種情況下的發(fā)送和消費(fèi)是不能保證順序的。如果將消息僅發(fā)送到同一個(gè)Queue中,消費(fèi)時(shí)也只從這個(gè)Queue上拉取消息,就嚴(yán)格保證了消息的順序性。

2 為什么需要順序消息

例如,現(xiàn)在有TOPIC ORDER_STATUS (訂單狀態(tài)),其下有4個(gè)Queue隊(duì)列,該Topic中的不同消息用于 描述當(dāng)前訂單的不同狀態(tài)。假設(shè)訂單有狀態(tài):未支付已支付發(fā)貨中發(fā)貨成功發(fā)貨失敗

根據(jù)以上訂單狀態(tài),生產(chǎn)者從時(shí)序上可以生成如下幾個(gè)消息:

訂單T0000001:未支付 --> 訂單T0000001:已支付 --> 訂單T0000001:發(fā)貨中 --> 訂單

T0000001:發(fā)貨失敗

消息發(fā)送到MQ中之后,Queue的選擇如果采用輪詢策略,消息在MQ的存儲(chǔ)可能如下:

這種情況下,我們希望Consumer消費(fèi)消息的順序和我們發(fā)送是一致的,然而上述MQ的投遞和消費(fèi)方式,我們無法保證順序是正確的。對(duì)于順序異常的消息,Consumer即使設(shè)置有一定的狀態(tài)容錯(cuò),也不能完全處理好這么多種隨機(jī)出現(xiàn)組合情況。

基于上述的情況,可以設(shè)計(jì)如下方案:對(duì)于相同訂單號(hào)的消息,通過一定的策略,將其放置在一個(gè)Queue中,然后消費(fèi)者再采用一定的策略(例如,一個(gè)線程獨(dú)立處理一個(gè)queue,保證處理消息的順序性),能夠保證消費(fèi)的順序性。

3 有序性分類

根據(jù)有序范圍的不同,RocketMQ可以嚴(yán)格地保證兩種消息的有序性:分區(qū)有序全局有序

全局有序

當(dāng)發(fā)送和消費(fèi)參與的Queue只有一個(gè)時(shí)所保證的有序是整個(gè)Topic中消息的順序, 稱為全局有序

在創(chuàng)建Topic時(shí)指定Queue的數(shù)量。有三種指定方式:

1)在代碼中創(chuàng)建Producer時(shí),可以指定其自動(dòng)創(chuàng)建的TopicQueue數(shù)量

2)在RocketMQ可視化控制臺(tái)中手動(dòng)創(chuàng)建Topic時(shí)指定Queue數(shù)量

3)使用mqadmin命令手動(dòng)創(chuàng)建Topic時(shí)指定Queue數(shù)量

分區(qū)有序

如 果有多個(gè)Queue參與,其僅可保證在該Queue分區(qū)隊(duì)列上的消息順序,則稱為分區(qū)有序

如何實(shí)現(xiàn)Queue的選擇?在定義Producer時(shí)我們可以指定消息隊(duì)列選擇器,而這個(gè)選擇器是我們自己實(shí)現(xiàn)了MessageQueueSelector接口定義的。

在定義選擇器的選擇算法時(shí),一般需要使用選擇key。這個(gè)選擇key可以是消息key也可以是其它數(shù)據(jù)。但無論誰做選擇key,都不能重復(fù),都是唯一的。

一般性的選擇算法是,讓選擇key(或其hash值)與該Topic所包含的Queue的數(shù)量取模,其結(jié)果即為選擇出的Queue的QueueId。

取模算法存在一個(gè)問題:不同選擇keyQueue數(shù)量取模結(jié)果可能會(huì)是相同的,即不同選擇key的消息可能會(huì)出現(xiàn)在相同的Queue,即同一個(gè)Consuemr可能會(huì)消費(fèi)到不同選擇key的消息。這個(gè)問題如何解決?一般性的作法是,從消息中獲取到選擇key,對(duì)其進(jìn)行判斷。若是當(dāng)前Consumer需要消費(fèi)的消息,則直接消費(fèi),否則,什么也不做。這種做法要求選擇key要能夠隨著消息一起被Consumer獲取到。此時(shí)使用消息key作為選擇key是比較好的做法。

以上做法會(huì)不會(huì)出現(xiàn)如下新的問題呢?不屬于那個(gè)Consumer的消息被拉取走了,那么應(yīng)該消費(fèi)該消息的Consumer是否還能再消費(fèi)該消息呢?同一個(gè)Queue中的消息不可能被同一個(gè)Group中的 不同Consumer同時(shí)消費(fèi)。所以,消費(fèi)現(xiàn)一個(gè)Queue的不同選擇key的消息的Consumer一定屬于不同的Group。而不同的Group中的Consumer間的消費(fèi)是相互隔離的,互不影響的。

三、延時(shí)消息

1 什么是延時(shí)消息

當(dāng)消息寫入到Broker后,在指定的時(shí)長后才可被消費(fèi)處理的消息,稱為延時(shí)消息。

采用RocketMQ的延時(shí)消息可以實(shí)現(xiàn)定時(shí)任務(wù)的功能,而無需使用定時(shí)器。典型的應(yīng)用場景是,電商交易中超時(shí)未支付關(guān)閉訂單的場景,12306平臺(tái)訂票超時(shí)未支付取消訂票的場景。

在電商平臺(tái)中,訂單創(chuàng)建時(shí)會(huì)發(fā)送一條延遲消息。這條消息將會(huì)在30分鐘后投遞給后臺(tái)業(yè)務(wù)系 統(tǒng)(Consumer),后臺(tái)業(yè)務(wù)系統(tǒng)收到該消息后會(huì)判斷對(duì)應(yīng)的訂單是否已經(jīng)完成支付。如果未完 成,則取消訂單,將商品再次放回到庫存;如果完成支付,則忽略。

12306平臺(tái)中,車票預(yù)訂成功后就會(huì)發(fā)送一條延遲消息。這條消息將會(huì)在45分鐘后投遞給后臺(tái)業(yè)務(wù)系統(tǒng)(Consumer),后臺(tái)業(yè)務(wù)系統(tǒng)收到該消息后會(huì)判斷對(duì)應(yīng)的訂單是否已經(jīng)完成支付。如 果未完成,則取消預(yù)訂,將車票再次放回到票池;如果完成支付,則忽略。

2 延時(shí)等級(jí)

延時(shí)消息的延遲時(shí)長不支持隨意時(shí)長的延遲,是通過特定的延遲等級(jí)來指定的。延時(shí)等級(jí)定義在RocketMQ服務(wù)端的MessageStoreConfig類中的如下變量中:

即,若指定的延時(shí)等級(jí)為3,則表示延遲時(shí)長為10s,即延遲等級(jí)是從1開始計(jì)數(shù)的。

當(dāng)然,如果需要自定義的延時(shí)等級(jí),可以通過在broker加載的配置中新增如下配置(例如下面增加了1天這個(gè)等級(jí)1d)。配置文件在RocketMQ安裝目錄下的conf目錄中。

messageDelayLevel = 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 1d

3 延時(shí)消息實(shí)現(xiàn)原理

具體實(shí)現(xiàn)方案是:

修改消息

Producer將消息發(fā)送到Broker后,Broker會(huì)首先將消息寫入到commitlog文件,然后需要將其分發(fā)到相應(yīng)的consumequeue。不過,在分發(fā)之前,系統(tǒng)會(huì)先判斷消息中是否帶有延時(shí)等級(jí)。若沒有,則直接正

常分發(fā);若有則需要經(jīng)歷一個(gè)復(fù)雜的過程:

  • 修改消息的Topic為SCHEDULE_TOPIC_XXXX
  • 根據(jù)延時(shí)等級(jí),在consumequeue目錄中SCHEDULE_TOPIC_XXXX主題下創(chuàng)建出相應(yīng)的queueId目錄與consumequeue文件(如果沒有這些目錄與文件的話)。

延遲等級(jí)delayLevelqueueId的對(duì)應(yīng)關(guān)系為queueId = delayLevel -1 需要注意,在創(chuàng)建queueId目錄時(shí),并不是一次性地將所有延遲等級(jí)對(duì)應(yīng)的目錄全部創(chuàng)建完畢,而是用到哪個(gè)延遲等級(jí)創(chuàng)建哪個(gè)目錄

  • 修改消息索引單元內(nèi)容。索引單元中的Message Tag HashCode部分原本存放的是消息的Tag的Hash值。現(xiàn)修改為消息的投遞時(shí)間。投遞時(shí)間是指該消息被重新修改為原Topic后再次被寫入到commitlog中的時(shí)間。投遞時(shí)間 = 消息存儲(chǔ)時(shí)間 + 延時(shí)等級(jí)時(shí)間。消息存儲(chǔ)時(shí)間指的是消息被發(fā)送到Broker時(shí)的時(shí)間戳。
  • 將消息索引寫入到SCHEDULE_TOPIC_XXXX主題下相應(yīng)的consumequeue中

SCHEDULE_TOPIC_XXXX目錄中各個(gè)延時(shí)等級(jí)Queue中的消息是如何排序的?

是按照消息投遞時(shí)間排序的。一個(gè)Broker中同一等級(jí)的所有延時(shí)消息會(huì)被寫入到consumequeue目錄中SCHEDULE_TOPIC_XXXX目錄下相同Queue中。即一個(gè)Queue中消息投遞時(shí)間的延遲等級(jí)時(shí)間是相同的。那么投遞時(shí)間就取決于于消息存儲(chǔ)時(shí)間了。即按照消息被發(fā)送到Broker的時(shí)間進(jìn)行排序的。

投遞延時(shí)消息

Broker內(nèi)部有?個(gè)延遲消息服務(wù)類ScheuleMessageService,其會(huì)消費(fèi)SCHEDULE_TOPIC_XXXX中的消息,即按照每條消息的投遞時(shí)間,將延時(shí)消息投遞到?標(biāo)Topic中。不過,在投遞之前會(huì)從commitlog

中將原來寫入的消息再次讀出,并將其原來的延時(shí)等級(jí)設(shè)置為0,即原消息變?yōu)榱艘粭l不延遲的普通消息。然后再次將消息投遞到目標(biāo)Topic中。

ScheuleMessageServiceBroker啟動(dòng)時(shí),會(huì)創(chuàng)建并啟動(dòng)一個(gè)定時(shí)器TImer,用于執(zhí)行相應(yīng)的定時(shí)任務(wù)。系統(tǒng)會(huì)根據(jù)延時(shí)等級(jí)的個(gè)數(shù),定義相應(yīng)數(shù)量的TimerTask,每個(gè)TimerTask負(fù)責(zé)一個(gè)延遲 等級(jí)消息的消費(fèi)與投遞。每個(gè)TimerTask都會(huì)檢測相應(yīng)Queue隊(duì)列的第一條消息是否到期。若第 一條消息未到期,則后面的所有消息更不會(huì)到期(消息是按照投遞時(shí)間排序的);若第一條消息到期了,則將該消息投遞到目標(biāo)Topic,即消費(fèi)該消息。

將消息重新寫入commitlog

延遲消息服務(wù)類ScheuleMessageService將延遲消息再次發(fā)送給了commitlog,并再次形成新的消息索引條目,分發(fā)到相應(yīng)Queue。

這其實(shí)就是一次普通消息發(fā)送。只不過這次的消息Producer是延遲消息服務(wù)類 ScheuleMessageService

四、事務(wù)消息

1 問題引入

這里的一個(gè)需求場景是:工行用戶A向建行用戶B轉(zhuǎn)賬1萬元。

我們可以使用同步消息來處理該需求場景:

  • 工行系統(tǒng)發(fā)送一個(gè)給B增款1萬元的同步消息M給Broker
  • 消息被Broker成功接收后,向工行系統(tǒng)發(fā)送成功ACK
  • 工行系統(tǒng)收到成功ACK后從用戶A中扣款1萬元
  • 建行系統(tǒng)從Broker中獲取到消息M
  • 建行系統(tǒng)消費(fèi)消息M,即向用戶B中增加1萬元

這其中是有問題的:若第3步中的扣款操作失敗,但消息已經(jīng)成功發(fā)送到了Broker。對(duì)于MQ來 說,只要消息寫入成功,那么這個(gè)消息就可以被消費(fèi)。此時(shí)建行系統(tǒng)中用戶B增加了1萬元。出 現(xiàn)了數(shù)據(jù)不一致問題。

2 解決思路

解決思路是,讓第1、2、3步具有原子性,要么全部成功,要么全部失敗。即消息發(fā)送成功后,必須要保證扣款成功。如果扣款失敗,則回滾發(fā)送成功的消息。而該思路即使用事務(wù)消息。這里要使用分布式事務(wù)解決方案。

使用事務(wù)消息來處理該需求場景:

  • 事務(wù)管理器TM向事務(wù)協(xié)調(diào)器TC發(fā)起指令,開啟全局事務(wù)
  • 工行系統(tǒng)發(fā)一個(gè)給B增款1萬元的事務(wù)消息M給TC
  • TC會(huì)向Broker發(fā)送半事務(wù)消息prepareHalf,將消息M預(yù)提交到Broker。此時(shí)的建行系統(tǒng)是看不到Broker中的消息M的
  • Broker會(huì)將預(yù)提交執(zhí)行結(jié)果Report給TC。
  • 如果預(yù)提交失敗,則TC會(huì)向TM上報(bào)預(yù)提交失敗的響應(yīng),全局事務(wù)結(jié)束;如果預(yù)提交成功,TC會(huì)調(diào)用工行系統(tǒng)的回調(diào)操作,去完成工行用戶A的預(yù)扣款1萬元的操作
  • 工行系統(tǒng)會(huì)向TC發(fā)送預(yù)扣款執(zhí)行結(jié)果,即本地事務(wù)的執(zhí)行狀態(tài)
  • TC收到預(yù)扣款執(zhí)行結(jié)果后,會(huì)將結(jié)果上報(bào)給TM。

預(yù)扣款執(zhí)行結(jié)果存在三種可能性:

// 描述本地事務(wù)執(zhí)行狀態(tài) 
public enum LocalTransactionState { 
    COMMIT_MESSAGE, // 本地事務(wù)執(zhí)行成功 
    ROLLBACK_MESSAGE, // 本地事務(wù)執(zhí)行失敗 
    UNKNOW, // 不確定,表示需要進(jìn)行回查以確定本地事務(wù)的執(zhí)行結(jié)果 
}
  • TM會(huì)根據(jù)上報(bào)結(jié)果向TC發(fā)出不同的確認(rèn)指令

若預(yù)扣款成功(本地事務(wù)狀態(tài)為COMMIT_MESSAGE),則TM向TC發(fā)送Global Commit指令

若預(yù)扣款失敗(本地事務(wù)狀態(tài)為ROLLBACK_MESSAGE),則TM向TC發(fā)送Global Rollback指令

若現(xiàn)未知狀態(tài)(本地事務(wù)狀態(tài)為UNKNOW),則會(huì)觸發(fā)工行系統(tǒng)的本地事務(wù)狀態(tài)回查操作。回查操作會(huì)將回查結(jié)果,即COMMIT_MESSAGE或ROLLBACK_MESSAGE Report給TC。TC將結(jié)果上 報(bào)給TM,TM會(huì)再向TC發(fā)送最終確認(rèn)指令Global Commit或Global Rollback

  • TC在接收到指令后會(huì)向Broker與工行系統(tǒng)發(fā)出確認(rèn)指令

TC接收的若是Global Commit指令,則向Broker與工行系統(tǒng)發(fā)送Branch Commit指令。此時(shí) Broker中的消息M才可被建行系統(tǒng)看到;此時(shí)的工行用戶A中的扣款操作才真正被確認(rèn) TC接收到的若是Global Rollback指令,則向Broker與工行系統(tǒng)發(fā)送Branch Rollback指令。此時(shí) Broker中的消息M將被撤銷;工行用戶A中的扣款操作將被回滾

以上方案就是為了確保消息投遞扣款操作能夠在一個(gè)事務(wù)中,要成功都成功,有一個(gè)失敗,則全部回滾。

以上方案并不是一個(gè)典型的XA模式。因?yàn)?em>XA模式中的分支事務(wù)是異步的,而事務(wù)消息方案中的消息預(yù)提交與預(yù)扣款操作間是同步的。

3 基礎(chǔ)

分布式事務(wù)

對(duì)于分布式事務(wù),通俗地說就是,一次操作由若干分支操作組成,這些分支操作分屬不同應(yīng)用,分布在 不同服務(wù)器上。分布式事務(wù)需要保證這些分支操作要么全部成功,要么全部失敗。分布式事務(wù)與普通事務(wù)一樣,就是為了保證操作結(jié)果的一致性。

事務(wù)消息

RocketMQ提供了類似X/Open XA的分布式事務(wù)功能,通過事務(wù)消息能達(dá)到分布式事務(wù)的最終一致。XA 是一種分布式事務(wù)解決方案,一種分布式事務(wù)處理模式。

半事務(wù)消息

暫不能投遞的消息,發(fā)送方已經(jīng)成功地將消息發(fā)送到了Broker,但是Broker未收到最終確認(rèn)指令,此時(shí) 該消息被標(biāo)記成“暫不能投遞”狀態(tài),即不能被消費(fèi)者看到。處于該種狀態(tài)下的消息即半事務(wù)消息。

本地事務(wù)狀態(tài)

Producer回調(diào)操作執(zhí)行的結(jié)果為本地事務(wù)狀態(tài),其會(huì)發(fā)送給TC,而TC會(huì)再發(fā)送給TM。TM會(huì)根據(jù)TC發(fā)送來的本地事務(wù)狀態(tài)來決定全局事務(wù)確認(rèn)指令。

消息回查

消息回查,即重新查詢本地事務(wù)的執(zhí)行狀態(tài)。本例就是重新到DB中查看預(yù)扣款操作是否執(zhí)行成功。

注意,消息回查不是重新執(zhí)行回調(diào)操作。回調(diào)操作是進(jìn)行預(yù)扣款操作,而消息回查則是查看預(yù) 扣款操作執(zhí)行的結(jié)果。

引發(fā)消息回查的原因最常見的有兩個(gè):

1)回調(diào)操作返回UNKNWON

2)TC沒有接收到TM的最終全局事務(wù)確認(rèn)指令

RocketMQ中的消息回查設(shè)置

關(guān)于消息回查,有三個(gè)常見的屬性設(shè)置。它們都在broker加載的配置文件中設(shè)置,例如:

  • transactinotallow=20,指定TM在20秒內(nèi)應(yīng)將最終確認(rèn)狀態(tài)發(fā)送給TC,否則引發(fā)消息回查。默認(rèn)為60秒
  • transactinotallow=5,指定最多回查5次,超過后將丟棄消息并記錄錯(cuò)誤日志。默認(rèn)15次。
  • transactinotallow=10,指定設(shè)置的多次消息回查的時(shí)間間隔為10秒。默認(rèn)為60秒。

4 XA模式三劍客

XA協(xié)議

XA(Unix Transaction)是一種分布式事務(wù)解決方案,一種分布式事務(wù)處理模式,是基于XA協(xié)議的。

XA協(xié)議由Tuxedo(Transaction for Unix has been Extended for Distributed Operation,分布式操作擴(kuò)展之后的Unix事務(wù)系統(tǒng))首先提出的,并交給X/Open組織,作為資源管理器與事務(wù)管理器的接口標(biāo)

準(zhǔn)。

XA模式中有三個(gè)重要組件:TC、TM、RM。

TC

Transaction Coordinator,事務(wù)協(xié)調(diào)者。維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局事務(wù)提交或回滾。

RocketMQBroker充當(dāng)著TC

TM

Transaction Manager,事務(wù)管理器。定義全局事務(wù)的范圍:開始全局事務(wù)、提交或回滾全局事務(wù)。它 實(shí)際是全局事務(wù)的發(fā)起者。

RocketMQ中事務(wù)消息的Producer充當(dāng)著TM

RM

Resource Manager,資源管理器。管理分支事務(wù)處理的資源,與TC交談以注冊分支事務(wù)和報(bào)告分支事務(wù)的狀態(tài),并驅(qū)動(dòng)分支事務(wù)提交或回滾。

RocketMQ中事務(wù)消息的ProducerBroker均是RM

5 注意

事務(wù)消息不支持延時(shí)消息

對(duì)于事務(wù)消息要做好冪等性檢查,因?yàn)槭聞?wù)消息可能不止一次被消費(fèi)(因?yàn)榇嬖诨貪L后再提交的情況)

五、批量消息

1 批量發(fā)送消息

發(fā)送限制

生產(chǎn)者進(jìn)行消息發(fā)送時(shí)可以一次發(fā)送多條消息,這可以大大提升Producer的發(fā)送效率。不過需要注意以 下幾點(diǎn):

  • 批量發(fā)送的消息必須具有相同的Topic
  • 批量發(fā)送的消息必須具有相同的刷盤策略
  • 批量發(fā)送的消息不能是延時(shí)消息與事務(wù)消息

批量發(fā)送大小

默認(rèn)情況下,一批發(fā)送的消息總大小不能超過4MB字節(jié)。如果想超出該值,有兩種解決方案:

方案一:將批量消息進(jìn)行拆分,拆分為若干不大于4M的消息集合分多次批量發(fā)送

方案二:在Producer端與Broker端修改屬性

** Producer端需要在發(fā)送之前設(shè)置Producer的maxMessageSize屬性

** Broker端需要修改其加載的配置文件中的maxMessageSize屬性

生產(chǎn)者發(fā)送的消息大小

生產(chǎn)者通過send()方法發(fā)送的Message,并不是直接將Message序列化后發(fā)送到網(wǎng)絡(luò)上的,而是通過這 個(gè)Message生成了一個(gè)字符串發(fā)送出去的。這個(gè)字符串由四部分構(gòu)成:Topic、消息Body、消息日志(占20字節(jié)),及用于描述消息的一堆屬性key-value。這些屬性中包含例如生產(chǎn)者地址、生產(chǎn)時(shí)間、要發(fā)送的QueueId等。最終寫入到Broker中消息單元中的數(shù)據(jù)都是來自于這些屬性。

2 批量消費(fèi)消息

修改批量屬性

Consumer的MessageListenerConcurrently監(jiān)聽接口的consumeMessage()方法的第一個(gè)參數(shù)為消息列 表,但默認(rèn)情況下每次只能消費(fèi)一條消息。若要使其一次可以消費(fèi)多條消息,則可以通過改Consumer的consumeMessageBatchMaxSize屬性來指定。不過,該值不能超過32。因?yàn)槟J(rèn)情況下消 費(fèi)者每次可以拉取的消息最多是32條。若要修改一次拉取的最大值,則可通過修改Consumer的pullBatchSize屬性來指定。

存在的問題

Consumer的pullBatchSize屬性與consumeMessageBatchMaxSize屬性是否設(shè)置的越大越好?當(dāng)然不是。 pullBatchSize值設(shè)置的越大,Consumer每拉取一次需要的時(shí)間就會(huì)越長,且在網(wǎng)絡(luò)上傳輸出現(xiàn) 問題的可能性就越高。若在拉取過程中若出現(xiàn)了問題,那么本批次所有消息都需要全部重新拉 取。

,你consumeMessageBatchMaxSize值設(shè)置的越大,Consumer的消息并發(fā)消費(fèi)能力越低,且這批被消費(fèi)的消息具有相同的消費(fèi)結(jié)果。因?yàn)閏onsumeMessageBatchMaxSize指定的一批消息只會(huì)使用一 個(gè)線程進(jìn)行處理,且在處理過程中只要有一個(gè)消息處理異常,則這批消息需要全部重新再次消費(fèi) 處理。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-06-30 13:41:44

SQL 語句group by

2024-09-18 07:00:00

消息隊(duì)列中間件消息隊(duì)列

2023-04-26 10:21:04

2022-08-02 06:55:35

移動(dòng)設(shè)備Android

2022-12-09 19:00:02

Vite兼容性BigInt

2020-11-04 17:35:39

網(wǎng)絡(luò)安全漏洞技術(shù)

2024-10-22 09:59:36

虛擬化容器化系統(tǒng)

2022-09-14 08:11:06

分頁模糊查詢

2024-11-26 14:29:48

2024-02-19 08:01:59

服務(wù)微服務(wù)授權(quán)

2020-03-23 08:15:43

JavaScriptError對(duì)象函數(shù)

2022-01-09 23:20:50

手機(jī)國產(chǎn)蘋果

2023-12-07 07:08:09

Angular函數(shù)

2023-09-01 07:38:45

ArrayListArrayst實(shí)線類

2023-07-04 08:48:24

靜態(tài)代碼分析工具

2022-03-13 18:53:31

interfacetypeTypeScript

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美一区二区三区免费| 99久久精品免费精品国产| 一区二区三区视频在线| 午夜免费看视频| 国产写真视频在线观看| 国产+成+人+亚洲欧洲自线| 午夜精品久久久久久久99黑人| 熟女人妻在线视频| 欧美亚洲黄色| 精品国产乱码久久久久久虫虫漫画 | 91精品国产综合久久久久久久| 日韩最新中文字幕| 天堂资源中文在线| 久久99精品久久久| 97色伦亚洲国产| 日本成人免费在线观看| 老司机成人在线| 欧美日韩综合色| 国产日韩av网站| 伦xxxx在线| 久久综合久久综合久久| 亚洲最大av在线| 超碰在线观看91| 激情亚洲成人| 久久资源免费视频| 美国黄色特级片| 麻豆一区二区| 日韩小视频在线观看专区| 国产精品免费观看久久| 丝袜中文在线| 亚洲欧洲国产日韩| 欧美主播一区二区三区美女 久久精品人| 国产精品午夜福利| 日韩福利电影在线观看| 555www成人网| 久久久久久久福利| 91精品国产91久久久久久黑人| 精品亚洲夜色av98在线观看| 在线精品视频播放| 国产精品一区二区精品| 欧美性生活大片视频| 两根大肉大捧一进一出好爽视频| av大大超碰在线| 国产精品乱人伦一区二区| 欧美精品一区在线| 手机在线精品视频| 成人精品在线视频观看| 成人免费视频网站入口| 国产免费一区二区三区最新不卡| 美女尤物国产一区| 日韩美女在线观看| 国产毛片aaa| 亚洲成人原创| 欧美激情精品久久久久久久变态 | 无码国精品一区二区免费蜜桃 | 国产成人精品无码片区在线| 91蝌蚪精品视频| 欧美一区二区三区视频免费| 男人午夜视频在线观看| 亚洲欧洲专区| 在线不卡中文字幕播放| 中文字幕一区久久| 亚洲精品大片| 91精品免费在线| 红桃视频一区二区三区免费| 精品国产一区二区三区2021| 日韩欧美国产不卡| 亚洲av无码成人精品区| aaa国产精品| 亚洲国产精品资源| 无码人妻精品一区二区三区温州| 四虎884aa成人精品最新| 日韩激情av在线播放| 波多野结衣办公室33分钟| 美女少妇全过程你懂的久久| 亚洲图片欧美午夜| 日本黄色激情视频| 国产精品二区不卡| 欧美不卡视频一区发布| 国产污片在线观看| 午夜在线精品| 国产精品一区二区三区毛片淫片| 亚洲最大成人av| 国产主播一区二区| 国产精品久久波多野结衣| 青青草在线免费视频| 中文字幕精品三区| 国产制服91一区二区三区制服| 毛片在线网址| 色屁屁一区二区| 亚洲免费黄色录像| 高清欧美性猛交xxxx黑人猛| 亚洲欧美中文另类| 爱爱视频免费在线观看| 亚洲黄色免费| 国产精品日韩在线| 国产女无套免费视频| 成人av手机在线观看| 欧美在线播放一区二区| 菠萝菠萝蜜在线视频免费观看| 亚洲成人午夜电影| 亚洲黄色av网址| 一区二区三区在线资源| 亚洲午夜精品久久久久久久久久久久| 午夜激情福利网| 宅男噜噜噜66国产日韩在线观看| 国产日韩在线看| 欧洲成人一区二区三区| 亚洲国产成人午夜在线一区| av女优在线播放| 国产原创一区| 精品爽片免费看久久| 国产精品国产精品88| 久久精品动漫| 都市激情久久久久久久久久久| 国产爆初菊在线观看免费视频网站| 一区二区三区免费看视频| 欧美一级黄色影院| 风间由美中文字幕在线看视频国产欧美| 一个人www欧美| 伊人久久综合视频| 国产一区二区三区黄视频 | 成人写真福利网| 日本精品专区| 亚洲午夜久久久久久久久电影网| xx欧美撒尿嘘撒尿xx| 久久91麻豆精品一区| 欧美激情视频在线观看| 亚洲一区二区三区高清视频| 久久影视一区二区| 福利视频一二区| 久久国产精品免费一区二区三区| 在线日韩日本国产亚洲| 久久精品国产成人av| 成人免费视频视频在线观看免费| 男女啪啪的视频| 福利一区二区三区视频在线观看| 亚洲美女久久久| 日韩欧美三级视频| 丁香激情综合五月| 777久久精品一区二区三区无码| 四虎视频在线精品免费网址| 中文字幕亚洲欧美日韩在线不卡 | 久久精品国产一区二区三区日韩| 青草视频在线免费直播 | 日本久久亚洲电影| 欧美一区,二区| 亚洲一级二级三级在线免费观看| 天天操精品视频| 91九色精品| 成人亚洲欧美一区二区三区| 一级毛片视频在线| 欧美日韩久久久| 五月天婷婷丁香网| 免费成人小视频| 亚洲精品成人自拍| 国产精品4hu.www| 日韩中文字幕免费视频| 一级二级三级视频| 日韩毛片精品高清免费| 男女视频在线观看网站| 欧美激情成人在线| 99久久一区三区四区免费| 在线免费观看的av| 亚洲成人性视频| 黑人一级大毛片| 97久久超碰精品国产| 中文字幕无码不卡免费视频| 成人精品影院| 国产精品视频大全| 国产黄色小视频在线| 欧美变态口味重另类| 日本熟妇乱子伦xxxx| 久久久久青草大香线综合精品| 日韩黄色片视频| 不卡一区2区| 成人久久久久久| 欧美性爽视频| 精品视频在线播放| 成人免费视频国产免费| 亚洲视频中文字幕| 韩国三级hd两男一女| 久久久久免费| 中文字幕中文字幕在线中心一区| 婷婷综合国产| 欧洲美女免费图片一区| 成人免费在线视频网| 日韩一级免费观看| 在线观看日本视频| 国产精品美日韩| 中文字幕99页| 日韩电影一区二区三区| 好色先生视频污| 欧美一区二区三区红桃小说| 国产精品美女午夜av| 国产蜜臀av在线播放| 亚洲色图50p| 国内老熟妇对白xxxxhd| 日韩欧美成人网| 粉嫩av性色av蜜臀av网站| 94色蜜桃网一区二区三区| www.cao超碰| 国产精品美女久久久浪潮软件| 亚洲欧美日韩精品综合在线观看| 91成人精品在线| 国产精品久久久久91| 超碰在线网站| 精品国偷自产在线| 日韩专区一区二区| 欧美一级黄色录像| 中文人妻av久久人妻18| 亚洲一二三区不卡| 99热99这里只有精品| 91首页免费视频| 精品国产一二区| 久草中文综合在线| 国产无套内射久久久国产| 欧美不卡在线| 亚洲女人毛片| 九热爱视频精品视频| av免费观看久久| 四虎精品永久免费| 国产精品福利无圣光在线一区| 国产精品186在线观看在线播放| 最近的2019中文字幕免费一页| 亚洲日本香蕉视频| 欧美变态tickle挠乳网站| 99免费在线视频| 欧美美女网站色| 久久精品偷拍视频| 狠狠色噜噜狠狠狠狠97| 国产一级中文字幕| 一区二区三区在线视频观看| 中文字幕第69页| 国产欧美综合在线| 精品人妻一区二区三区蜜桃视频| av电影在线观看完整版一区二区| 日韩精品国产一区| 国产电影精品久久禁18| 亚洲欧美天堂在线| 寂寞少妇一区二区三区| 亚欧激情乱码久久久久久久久| 久久精品成人| 茄子视频成人免费观看| 国产一区二区三区的电影 | 日韩一级二级三级| 91精品中文字幕| 欧美男女性生活在线直播观看| 中文字幕在线观看第二页| 色菇凉天天综合网| 欧美日韩a v| 欧美日精品一区视频| 一二区在线观看| 91精品国产综合久久久久久漫画 | 电影网一区二区| 日韩av电影中文字幕| 成人私拍视频| 日本一欧美一欧美一亚洲视频 | 91精品视频在线免费观看| 亚洲香蕉久久| 亚洲a区在线视频| 亚洲2区在线| 精品国产第一页| 中文字幕精品影院| 色噜噜狠狠色综合网| 色999日韩| 一二三在线视频| 激情久久综合| www.国产区| 免费成人av在线| 亚洲天堂一区二区在线观看| 成人综合在线视频| 最新中文字幕视频| 国产精品全国免费观看高清 | 小说区亚洲自拍另类图片专区| 日本道在线视频| 在线亚洲激情| 亚洲国产日韩欧美在线观看| 国产剧情一区在线| 玖草视频在线观看| 欧美激情一区二区三区四区| 成人高潮免费视频| 亚洲成人免费影院| 黄色av一区二区| 欧美mv日韩mv国产网站app| 性xxxx视频播放免费| 日韩在线中文视频| 懂色av一区| 国产精品成人播放| 日韩精品中文字幕吗一区二区| 精品国产乱码久久久久| 色琪琪久久se色| 成年人看的毛片| 免费在线成人网| 动漫美女无遮挡免费| 欧美国产精品v| 国产在线观看成人| 欧美性生活大片视频| 日韩中文字幕观看| 色妞色视频一区二区三区四区| 欧美videossex| 国产精品视频一| 精品国产一区二区三区成人影院| 亚洲春色在线视频| 亚洲黑丝一区二区| 手机精品视频在线| 久久久久国产精品人| 国模无码国产精品视频| 91黄色免费版| 欧美天堂在线视频| 久久久精品网站| 成人影院大全| 国产精品久久久久久久久久久久午夜片 | 欧美96一区二区免费视频| 日本一区二区在线观看视频| 欧美激情一区二区| 国产成人无码精品亚洲| 精品裸体舞一区二区三区| 黄色在线免费网站| 国产精品久久久久久久久男| 牲欧美videos精品| 久操网在线观看| 国产乱子伦视频一区二区三区| 日韩一级av毛片| 精品人伦一区二区三区蜜桃网站| www.国产黄色| 日韩视频免费大全中文字幕| 欧洲av一区二区| 美女主播视频一区| 91久久久久| 国产一级免费片| 亚洲一二三区不卡| 亚洲国产成人一区二区| 久久久av一区| 亚洲在线资源| 一区二区免费在线观看| 蜜桃视频一区二区三区在线观看| 久久久久亚洲av无码专区桃色| 精品成人在线视频| 黄频在线免费观看| 久久久久久久激情视频| 色播一区二区| 亚洲中文字幕无码一区二区三区| 国产九九视频一区二区三区| 午夜国产小视频| 911精品国产一区二区在线| 在线免费观看黄色av| 国产精品免费看久久久香蕉| 成人嫩草影院| 午夜视频在线网站| 亚洲欧洲av在线| 国产av精国产传媒| 久久99久久99精品中文字幕| 中文字幕视频精品一区二区三区| 国产爆乳无码一区二区麻豆| 国产不卡免费视频| 日本少妇xxxx动漫| 亚洲裸体xxxx| 国产精品字幕| 中文字幕一区二区三区5566| 国产综合色视频| 青青草原国产视频| 精品国产sm最大网站免费看| gratisvideos另类灌满| 久久久久久九九| 日韩va欧美va亚洲va久久| 91导航在线观看| 日韩一区二区三区视频在线| 国产乱妇乱子在线播视频播放网站| 国产伦理久久久| 亚洲在线日韩| 操她视频在线观看| 日韩午夜在线影院| 国产美女精品写真福利视频| 日韩欧美精品久久| 国产一区二区女| 欧美精品二区三区| 中文字幕九色91在线| 91精品国产自产观看在线| 日韩成人三级视频| 久久蜜桃av一区二区天堂| 在线观看一二三区| 欧美国产日韩xxxxx| 欧美人与动xxxxz0oz| 亚洲少妇久久久| 亚洲国产一区视频| yiren22亚洲综合伊人22| 97人人模人人爽人人喊38tv| 亚洲麻豆视频| 91狠狠综合久久久久久| 日韩一卡二卡三卡| 在线精品亚洲欧美日韩国产| 一区高清视频| 成人av电影在线网| 中文字幕网址在线| 久久频这里精品99香蕉| 日韩在线中文| 亚洲av无码成人精品国产| 91精品国产综合久久蜜臀| 在线手机中文字幕|