日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

集群消費(fèi)和廣播消費(fèi)

更新時(shí)間:

集群消費(fèi)和廣播消費(fèi)是云消息隊(duì)列 RocketMQ 版的基本消費(fèi)模式,您可以在消費(fèi)者客戶(hù)端將消費(fèi)模式設(shè)置為集群消費(fèi)或者廣播消費(fèi),用于控制同一條消息只能被集群內(nèi)一個(gè)消費(fèi)者消費(fèi)到,還是會(huì)被集群內(nèi)每個(gè)消費(fèi)者都消費(fèi)到。

背景信息

云消息隊(duì)列 RocketMQ 版是基于發(fā)布和訂閱模式的消息系統(tǒng)。消費(fèi)者,即消息的訂閱方,從訂閱的Topic中接收消息并消費(fèi)。

使用相同Group ID的多個(gè)消費(fèi)者屬于同一個(gè)消費(fèi)者集群。同一個(gè)集群下的消費(fèi)者消費(fèi)邏輯必須完全一致(包括Tag的使用)。更多信息,請(qǐng)參見(jiàn)訂閱關(guān)系一致

集群消費(fèi)

基本概念

集群消費(fèi)模式下,同一Group下的多個(gè)消費(fèi)者消費(fèi)指定Topic中的消息時(shí),云消息隊(duì)列 RocketMQ 版會(huì)將多條消息投遞給不同的消費(fèi)者處理,同一條消息只會(huì)被一個(gè)消費(fèi)者消費(fèi)到。

圖片2.png

適用場(chǎng)景

  • 消息負(fù)載均衡:當(dāng)業(yè)務(wù)消息量很大時(shí),可以使用集群消費(fèi)模式將消息分配給多個(gè)消費(fèi)者進(jìn)行處理,實(shí)現(xiàn)負(fù)載均衡。每個(gè)消費(fèi)者只處理其中一部分消息,從而提高消息的處理效率和吞吐量。

  • 分布式數(shù)據(jù)處理:在大規(guī)模數(shù)據(jù)處理的場(chǎng)景中,使用集群消費(fèi)模式可以將數(shù)據(jù)分發(fā)給多個(gè)處理節(jié)點(diǎn)進(jìn)行并行處理。每個(gè)節(jié)點(diǎn)只處理其中一部分?jǐn)?shù)據(jù),從而加速數(shù)據(jù)處理的速度。

注意事項(xiàng)

  • 集群模式下,不保證每一次失敗重投的消息投遞到同一臺(tái)機(jī)器上。

  • 請(qǐng)保持消費(fèi)模式一致性,即一個(gè)Group下的所有消費(fèi)者都設(shè)置相同的消費(fèi)模式,如果消費(fèi)模式混用則全部以廣播消費(fèi)為準(zhǔn)。

    例如,同一個(gè)Group下有5個(gè)Consumer,其中2個(gè)Consumer設(shè)置為集群模式消費(fèi),另外3個(gè)Consumer設(shè)置為廣播消費(fèi)模式,實(shí)際所有的Consumer都將按照廣播消費(fèi)模式進(jìn)行消費(fèi)。

廣播消費(fèi)

基本概念

廣播消費(fèi)模式下,同一Group下的多個(gè)消費(fèi)者消費(fèi)指定Topic中的消息時(shí),云消息隊(duì)列 RocketMQ 版會(huì)將每條消息都投遞給集群內(nèi)所有的消費(fèi)者,保證每條消息至少被每個(gè)消費(fèi)者消費(fèi)一次。

該模式適用于多個(gè)消費(fèi)者對(duì)同一組消息進(jìn)行并行處理的情況,例如,訂單處理。

圖片3.png

適用場(chǎng)景

  • 通知公告:當(dāng)某個(gè)重要公告或通知發(fā)布時(shí),系統(tǒng)可以使用廣播消費(fèi)模式,將通知發(fā)送給所有訂閱了該消息的用戶(hù)。這樣可以確保每個(gè)用戶(hù)都能及時(shí)收到通知,并避免遺漏。

  • 實(shí)時(shí)數(shù)據(jù)同步:在分布式系統(tǒng)中,有時(shí)需要將某個(gè)數(shù)據(jù)進(jìn)行實(shí)時(shí)同步,保持多個(gè)節(jié)點(diǎn)的數(shù)據(jù)一致性。可以使用廣播消費(fèi)模式將這個(gè)數(shù)據(jù)的變更通知發(fā)送給所有需要同步的節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都會(huì)收到相同的變更消息,從而保持?jǐn)?shù)據(jù)的實(shí)時(shí)同步。

注意事項(xiàng)

  • 廣播模式下,云消息隊(duì)列 RocketMQ 版保證消息至少被客戶(hù)端消費(fèi)一次,但是并不會(huì)重投消費(fèi)失敗的消息,因此業(yè)務(wù)方需要關(guān)注消費(fèi)失敗的情況。

  • 廣播模式下,客戶(hù)端每一次重啟都會(huì)從最新消息消費(fèi)。客戶(hù)端在被停止期間發(fā)送至服務(wù)端的消息將會(huì)被自動(dòng)跳過(guò),請(qǐng)謹(jǐn)慎選擇。

  • 廣播模式下,每條消息都會(huì)被大量的客戶(hù)端重復(fù)處理,因此推薦盡可能使用集群模式。

  • 請(qǐng)保持消費(fèi)模式一致性,即一個(gè)Group下的所有消費(fèi)者都設(shè)置相同的消費(fèi)模式,如果消費(fèi)模式混用則全部以廣播消費(fèi)為準(zhǔn)。

    例如,同一個(gè)Group下有5個(gè)Consumer,其中2個(gè)Consumer設(shè)置為集群模式消費(fèi),另外3個(gè)Consumer設(shè)置為廣播消費(fèi)模式,實(shí)際所有的Consumer都將按照廣播消費(fèi)模式進(jìn)行消費(fèi)。

集群消費(fèi)和廣播消費(fèi)功能差異

集群消費(fèi)和廣播消費(fèi)模式下,各功能的支持情況如下:

功能

集群消費(fèi)

廣播消費(fèi)

TCP協(xié)議SDK

對(duì)號(hào)

對(duì)號(hào)

HTTP協(xié)議SDK

對(duì)號(hào)

錯(cuò)號(hào)

順序消息

對(duì)號(hào)

錯(cuò)號(hào)

重置消費(fèi)位點(diǎn)

對(duì)號(hào)

錯(cuò)號(hào)

消息重試

對(duì)號(hào)

錯(cuò)號(hào)

消息堆積查詢(xún)、報(bào)警

對(duì)號(hào)

錯(cuò)號(hào)

訂閱關(guān)系查詢(xún)

對(duì)號(hào)

錯(cuò)號(hào)

消費(fèi)進(jìn)度

由服務(wù)端維護(hù)

  • 可靠性更高,客戶(hù)端重啟后,將按照上次的消費(fèi)進(jìn)度繼續(xù)消費(fèi)。

  • 支持服務(wù)端消費(fèi)重試機(jī)制,詳細(xì)信息,請(qǐng)參見(jiàn)消息重試

由客戶(hù)端維護(hù)

出現(xiàn)重復(fù)消費(fèi)的概率稍大于集群模式,客戶(hù)端每次重啟都會(huì)從最新消息消費(fèi)。

設(shè)置集群消費(fèi)和廣播消費(fèi)

云消息隊(duì)列 RocketMQ 版的消費(fèi)方式支持在消費(fèi)者客戶(hù)端修改,您需要在訂閱消息的SDK代碼中設(shè)置相關(guān)參數(shù)。若未設(shè)置,則默認(rèn)使用集群消費(fèi)方式。

TCP協(xié)議SDK

Java SDK示例

  • 集群消費(fèi)

    // MessageModel設(shè)置為CLUSTERING(不設(shè)置的情況下,默認(rèn)為集群消費(fèi))。
    properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.CLUSTERING);
  • 廣播消費(fèi)

    // MessageModel設(shè)置為BROADCASTING。
    properties.put(PropertyKeyConst.MessageModel, PropertyValueConst.BROADCASTING); 

C/C++ SDK示例

  • 集群消費(fèi)

    // MessageModel設(shè)置為CLUSTERING(不設(shè)置的情況下,默認(rèn)為集群消費(fèi))。
    factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::CLUSTERING);
  • 廣播消費(fèi)

    // MessageModel設(shè)置為BROADCASTING。
    factoryInfo.setFactoryProperty(ONSFactoryProperty:: MessageModel, ONSFactoryProperty::BROADCASTING);

.NET SDK示例

  • 集群消費(fèi)

    // MessageModel設(shè)置為CLUSTERING(不設(shè)置的情況下,默認(rèn)為集群消費(fèi))。
    factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.CLUSTERING); 
  • 廣播消費(fèi)

    // MessageModel設(shè)置為BROADCASTING。
    factoryInfo.setFactoryProperty(ONSFactoryProperty.MessageModel, ONSFactoryProperty.BROADCASTING);     

HTTP協(xié)議SDK

HTTP協(xié)議默認(rèn)僅支持集群消費(fèi),無(wú)需設(shè)置。

集群消費(fèi)和廣播消費(fèi)常見(jiàn)問(wèn)題

為什么將消費(fèi)模式設(shè)置為廣播消費(fèi)實(shí)際未生效?

可能原因如下:

  • 您使用的順序消息:順序消息僅支持集群消費(fèi),不支持廣播消費(fèi)。

  • 您使用的HTTP協(xié)議的SDK:HTTP協(xié)議僅支持集群消費(fèi),不支持廣播消費(fèi)。

一個(gè)Group中,是否支持既設(shè)置集群消費(fèi)又設(shè)置廣播消費(fèi)?

不支持。

請(qǐng)保持消費(fèi)模式一致性,即一個(gè)Group下的所有消費(fèi)者都設(shè)置相同的消費(fèi)模式,如果消費(fèi)模式混用則全部以廣播消費(fèi)為準(zhǔn)。

相關(guān)文檔

完整的消息收發(fā)示例代碼,請(qǐng)參見(jiàn)SDK參考概述