精品欧美一区二区三区在线观看 _久久久久国色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)

鲁丝片一区二区三区| 欧美老少配视频| 啊啊啊国产视频| 免费的黄网站在线观看| 国产69精品久久777的优势| 国产综合在线视频| 婷婷色一区二区三区| 不卡一区视频| 亚洲 欧美综合在线网络| 欧美日韩在线观看一区二区三区| 激情图片中文字幕| 欧美videos另类精品| 99精品欧美一区二区三区小说| 国产精品电影网站| 免费人成在线观看| 成人av资源电影网站| 精品少妇一区二区三区日产乱码| 国产成人亚洲精品无码h在线| 日本不卡视频| 26uuuu精品一区二区| 亚洲在线观看视频| 国产午夜精品久久久久久久久| 95精品视频| 一本色道**综合亚洲精品蜜桃冫| 国产精品三区www17con| 在线免费一区二区| 亚洲第一伊人| 欧美成人四级hd版| 一级黄色片网址| 久久香蕉网站| 日韩午夜中文字幕| 高潮一区二区三区| 永久免费av在线| 成人av免费在线观看| 性欧美亚洲xxxx乳在线观看| 黑人无套内谢中国美女| 污污的网站在线看| 国产无一区二区| 国内精品一区二区| 国产浮力第一页| 蜜桃视频免费观看一区| 琪琪第一精品导航| 妺妺窝人体色WWW精品| 风间由美性色一区二区三区四区| 欧美日韩1234| 韩国日本美国免费毛片| 在线观看福利电影| 精品久久久久久久久国产字幕 | 亚洲精品成人在线播放| 秋霞国产精品| 欧美亚洲精品一区| 美女网站免费观看视频| 芒果视频成人app| 欧美性猛交xxx| 免费一区二区三区在在线视频| 国产成人三级在线播放| 精品一区二区三区蜜桃| 国产精品久久久久久av下载红粉| 福利网址在线观看| 久久成人国产| 热久久这里只有精品| 特级毛片www| 久久亚洲国产精品一区二区| 国产成+人+综合+亚洲欧洲| 亚洲精品成人在线视频| 日韩制服丝袜av| 免费97视频在线精品国自产拍| 老熟妻内射精品一区| 亚洲v在线看| 欧美肥婆姓交大片| 日韩欧美中文字幕一区二区| 销魂美女一区二区三区视频在线| 国产精品狠色婷| 91久久久久久久久久久久| 在线看片成人| 57pao成人国产永久免费| 久久久精品视频网站| 日韩精品电影在线| 91免费高清视频| 黄色av免费观看| 久久久高清一区二区三区| 三区精品视频| caopo在线| 五月综合激情婷婷六月色窝| 午夜激情福利在线| 中文成人在线| 精品成人佐山爱一区二区| av在线免费看片| 66精品视频在线观看| 动漫精品一区二区| 国产成人无码一二三区视频| 国产欧美一区二区三区精品酒店| 日本高清不卡视频| 日韩va在线观看| 韩国一区二区三区视频| 亚洲激情视频在线| 91在线无精精品白丝| 91九色精品| 亚洲精品小视频| 911av视频| 亚洲精品18| 亚洲第一综合天堂另类专| 成年人免费观看视频网站| 四季av在线一区二区三区 | 亚洲欧美色图视频| 欧美特黄一级大片| 欧美精品一区在线播放| 日韩三级免费看| 老司机久久99久久精品播放免费| 国产在线日韩在线| 亚洲国产精品久久久久爰性色| 久久久久久久久岛国免费| 欧美性受xxxx黑人猛交88| 99riav视频在线观看| 在线国产电影不卡| 91成人在线观看喷潮蘑菇| 久草成人在线| 久久国产精品网站| 中文字字幕在线中文| 国产又黄又大久久| 欧美一区二区三区在线免费观看| 成人黄色网址| 色94色欧美sute亚洲线路二 | 不卡av在线网| 一区二区三区不卡在线| 九色porny自拍视频在线播放| 亚洲日穴在线视频| 日韩av三级在线| 亚洲ww精品| 日韩精品一区在线| 久艹在线观看视频| 教室别恋欧美无删减版| 欧美日韩福利视频| 中文字幕 国产| av中文字幕一区| 国产盗摄视频在线观看| 欧美日韩五区| 国产小视频91| 韩国av中文字幕| 成人一区二区视频| 尤物一区二区三区| 欧美日韩五码| 亚洲精品av在线播放| 波多野结衣爱爱视频| 日韩电影在线免费看| 欧美一区二区三区在线播放| 9999在线视频| 日韩欧美的一区二区| 黑人操日本美女| 青青草97国产精品免费观看 | 成人在线免费观看av| 99热这里有精品| 日韩日本欧美亚洲| 免费看av在线| 国产农村妇女毛片精品久久麻豆| 欧美日韩另类丝袜其他| 2020av在线| 欧美xxxxxxxx| 欧美被狂躁喷白浆精品| 男人的天堂亚洲一区| 亚洲欧美丝袜| 国产亚洲精品精品国产亚洲综合| 亚洲欧美激情在线视频| 91美女免费看| 97精品久久久午夜一区二区三区 | 黄色在线视频网站| 欧美男同性恋视频网站| 日韩免费成人av| 日本欧美久久久久免费播放网| 欧美精品一区二区三区四区五区| 精品众筹模特私拍视频| 激情懂色av一区av二区av| 精品人妻伦一二三区久| 韩日精品视频| 激情伦成人综合小说| 91超碰在线播放| 国产一区二区日韩| 影音先锋国产在线| 亚洲天堂网中文字| 亚洲一区二区三区三州| 国模吧视频一区| 精品久久中出| 免费亚洲电影| 夜夜嗨av色综合久久久综合网| 福利所第一导航| 国产精品一区免费视频| 国产又粗又猛又爽又黄的网站| 日韩第一区第二区| 国内精品国产三级国产在线专 | 亚洲精品久久久久久久久久久久久 | 国产视频一区在线观看| 日韩一级片播放| 久久免费av| 91麻豆国产精品| 国产精品25p| 亚洲视频axxx| 欧美久久久久久久久久久久| 成人h版在线观看| 国产欧美高清在线| 日韩欧美大片| 99久久伊人精品影院| 中文字幕乱码在线播放| 久久6免费高清热精品| 亚洲欧美日韩动漫| 欧美精品777| 国产精选第一页| 国产三级欧美三级| 韩国三级与黑人| 国产精品入口| 国产精品igao激情视频| 亚洲婷婷伊人| 欧美国产精品日韩| 男女网站在线观看| 午夜久久久久久| 性欧美一区二区| 国产成人亚洲综合色影视| 国产男女无遮挡| 天堂美国久久| 久久精品日韩| 国产精品igao视频网网址不卡日韩| 久久久久久久久久久av| 95在线视频| 亚洲国产97在线精品一区| 中文字幕视频免费观看| 亚洲国产婷婷综合在线精品| 我不卡一区二区| 成人激情小说网站| 天堂视频免费看| 久久久久网站| 青青在线免费观看| 精品一区二区三区中文字幕老牛| 精品国产一区二区三区麻豆免费观看完整版 | 国产va亚洲va在线va| 日本不卡高清| 久久免费看av| 高清欧美性猛交xxxx黑人猛| 成人精品久久av网站| 成人免费网站视频| 97人人做人人爱| 性欧美videoshd高清| 色老头一区二区三区| 国产中文字幕在线播放| 日韩黄在线观看| 高h调教冰块play男男双性文| 欧美日韩一级视频| 亚洲一级黄色大片| 欧美亚洲综合另类| 国产精品久久久久久久久夜色| 香蕉乱码成人久久天堂爱免费| 国产探花在线免费观看| 国产精品成人一区二区三区夜夜夜 | 日韩精品极品视频| 视频一区 中文字幕| 日韩欧美的一区| 农村少妇久久久久久久| 欧美成人福利视频| 亚洲av永久无码国产精品久久| 在线电影国产精品| 国产美女三级无套内谢| 欧美二区三区91| 国产露脸国语对白在线| 欧美久久一二区| 国产精品女人久久久| 在线成人小视频| 国产乱码精品一区二区| 亚洲第一精品电影| 日本高清视频www| 精品88久久久久88久久久| 亚洲国产精品久久人人爱潘金莲 | 天堂俺去俺来也www久久婷婷 | 国产精品chinese在线观看| 成人高清在线观看| 国产日韩三级| 国产一区高清视频| 欧美日韩水蜜桃| 一区二区91美女张开腿让人桶| 图片小说视频色综合| 9l视频自拍9l视频自拍| 欧美涩涩视频| 成人免费视频网站| 亚洲va久久久噜噜噜久久| 久久久久久欧美精品色一二三四| 伊人春色精品| 亚洲国产日韩美| 亚洲一本二本| 日韩精品在线中文字幕| 亚洲第一伊人| 在线观看国产福利| 国产99久久久国产精品潘金网站| 欧产日产国产精品98| 久久亚洲免费视频| 美国黄色片视频| 亚洲一区二区在线视频| 国产精品免费无遮挡无码永久视频| 欧美在线视频你懂得| 99er热精品视频| 日韩高清a**址| 免费在线观看黄色| 午夜精品一区二区三区在线播放| 2020国产在线| 91青草视频久久| 人人网欧美视频| 亚洲欧洲精品一区二区| 欧美日韩午夜| 精品久久久久久久无码| 成人av免费网站| 特级西西人体高清大胆| 一区二区三区高清在线| 一级黄色大片视频| 欧美一区二区视频免费观看| 午夜影院在线视频| 一区二区三区天堂av| 91中文在线| 青草青草久热精品视频在线观看| 四虎视频在线精品免费网址| 国产欧美综合精品一区二区| 99精品在线观看| 毛片在线播放视频| 激情综合网天天干| 女尊高h男高潮呻吟| 亚洲欧美日韩中文字幕一区二区三区| 国产欧美日韩另类| 在线播放中文一区| av成人手机在线| 4438全国成人免费| 日韩一二三区| 亚洲国产日韩美| 久久精品人人做人人爽电影蜜月| 日韩av在线中文| 国产精品每日更新在线播放网址| 欧美日韩中文视频| 欧美精品一级二级| 国产三级电影在线| 91av中文字幕| 99久热这里只有精品视频免费观看| 亚洲激情一区二区| 老牛国产精品一区的观看方式| 精品伦一区二区三区| 日韩美女视频一区二区| 中文字幕在线视频第一页| 亚洲免费电影一区| 亚洲精品88| 精品国产一区二区三区麻豆小说 | 男人的天堂成人在线| 少妇性l交大片7724com| 国产精品成人一区二区三区夜夜夜| 无码人妻一区二区三区线| 亚洲欧美国产一本综合首页| 极品视频在线| 久99久视频| 一本一本久久| 7788色淫网站小说| 亚洲精品伦理在线| 亚洲精品国偷拍自产在线观看蜜桃| 久久精品免费电影| 亚洲伊人精品酒店| 一区二区三区四区视频在线观看| 秋霞影院一区二区| 久久爱一区二区| 7777精品伊人久久久大香线蕉的 | 久久精品成人一区二区三区蜜臀| 欧美黄污视频| 亚洲精品鲁一鲁一区二区三区 | 午夜啪啪福利视频| 久久99精品久久只有精品| 九九热免费在线| 在线免费视频一区二区| 国产福利小视频在线| 国产主播在线一区| 亚洲欧美综合久久久| 国产精品嫩草69影院| 亚洲va韩国va欧美va精品| 色吊丝在线永久观看最新版本| 8x拔播拔播x8国产精品| 香蕉久久精品| chinese少妇国语对白| 国产视频一区二区在线观看| 欧美国产一级片| 永久555www成人免费| 日本综合精品一区| 黄页网站在线观看视频| 26uuu欧美| ,一级淫片a看免费| 欧美成人网在线| 亚洲调教一区| 中文av字幕在线观看| 亚洲黄一区二区三区| 婷婷五月综合久久中文字幕| 97av在线视频| 亚洲一区二区三区无吗| 久草免费资源站| 一本久久a久久精品亚洲| 成人一区二区不卡免费| 亚洲一区二区自拍| 99精品国产在热久久| 日韩视频在线观看免费视频| 日韩午夜激情电影| 女生影院久久| 久久精品国产精品亚洲精品色 | 91久久奴性调教|