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

生產(chǎn)者(Producer)

更新時(shí)間:

本文介紹云消息隊(duì)列 RocketMQ 版中生產(chǎn)者(Producer)的定義、模型關(guān)系、內(nèi)部屬性、版本兼容性及使用建議。

定義

生產(chǎn)者是云消息隊(duì)列 RocketMQ 版系統(tǒng)中用來(lái)構(gòu)建并傳輸消息到服務(wù)端的運(yùn)行實(shí)體。

生產(chǎn)者通常被集成在業(yè)務(wù)系統(tǒng)中,將業(yè)務(wù)消息按照要求封裝成云消息隊(duì)列 RocketMQ 版消息(Message)并發(fā)送至服務(wù)端。

在消息生產(chǎn)者中,可以定義如下傳輸行為:

  • 發(fā)送方式:生產(chǎn)者可通過(guò)API接口設(shè)置消息發(fā)送的方式。云消息隊(duì)列 RocketMQ 版支持同步傳輸和異步傳輸。更多信息,請(qǐng)參見(jiàn)消息傳輸模式。

  • 事務(wù)行為:云消息隊(duì)列 RocketMQ 版支持事務(wù)消息,對(duì)于事務(wù)消息需要生產(chǎn)者配合進(jìn)行事務(wù)檢查等行為保障事務(wù)的最終一致性。具體信息,請(qǐng)參見(jiàn)事務(wù)消息

生產(chǎn)者和主題的關(guān)系為多對(duì)多關(guān)系,即同一個(gè)生產(chǎn)者可以向多個(gè)主題發(fā)送消息,對(duì)于平臺(tái)類(lèi)場(chǎng)景如果需要發(fā)送消息到多個(gè)主題,并不需要?jiǎng)?chuàng)建多個(gè)生產(chǎn)者;同一個(gè)主題也可以接收多個(gè)生產(chǎn)者的消息,以此可以實(shí)現(xiàn)生產(chǎn)者性能的水平擴(kuò)展和容災(zāi)。

生產(chǎn)者主題關(guān)聯(lián)

模型關(guān)系

云消息隊(duì)列 RocketMQ 版的領(lǐng)域模型中,生產(chǎn)者的位置和流程如下:生產(chǎn)者

  1. 消息由生產(chǎn)者初始化并發(fā)送到云消息隊(duì)列 RocketMQ 版服務(wù)端。
  2. 消息按照到達(dá)云消息隊(duì)列 RocketMQ 版服務(wù)端的順序存儲(chǔ)到主題的指定隊(duì)列中。
  3. 消費(fèi)者按照指定的訂閱關(guān)系從云消息隊(duì)列 RocketMQ 版服務(wù)端中獲取消息并消費(fèi)。

內(nèi)部屬性

客戶(hù)端ID

  • 定義:生產(chǎn)者客戶(hù)端的標(biāo)識(shí),用于區(qū)分不同的生產(chǎn)者。集群內(nèi)全局唯一。

  • 取值:客戶(hù)端ID由云消息隊(duì)列 RocketMQ 版的SDK自動(dòng)生成,主要用于日志查看、問(wèn)題定位等運(yùn)維場(chǎng)景,不支持修改。

通信參數(shù)
  • 接入點(diǎn)信息(必選):連接服務(wù)端的接入地址,用于識(shí)別服務(wù)端集群。

    接入點(diǎn)必須按格式配置,建議使用域名,避免使用IP地址,防止節(jié)點(diǎn)變更無(wú)法進(jìn)行熱點(diǎn)遷移。

  • 身份認(rèn)證信息(可選):客戶(hù)端用于身份驗(yàn)證的憑證信息。

    僅在服務(wù)端開(kāi)啟身份識(shí)別和認(rèn)證時(shí)需要傳輸。

  • 請(qǐng)求超時(shí)時(shí)間(可選):客戶(hù)端網(wǎng)絡(luò)請(qǐng)求調(diào)用的超時(shí)時(shí)間。取值范圍和默認(rèn)值,請(qǐng)參見(jiàn)參數(shù)限制。

預(yù)綁定主題列表

  • 定義:云消息隊(duì)列 RocketMQ 版的生產(chǎn)者需要將消息發(fā)送到的目標(biāo)主題列表,主要作用如下:

    • 事務(wù)消息(必須設(shè)置):事務(wù)消息場(chǎng)景下,生產(chǎn)者在故障、重啟恢復(fù)時(shí),需要檢查事務(wù)消息的主題中是否有未提交的事務(wù)消息。避免生產(chǎn)者發(fā)送新消息后,主題中的舊事務(wù)消息一直處于未提交狀態(tài),造成業(yè)務(wù)延遲。

    • 非事務(wù)消息(建議設(shè)置):服務(wù)端會(huì)在生產(chǎn)者初始化時(shí)根據(jù)預(yù)綁定主題列表,檢查目標(biāo)主題的訪問(wèn)權(quán)限和合法性,而不需要等到應(yīng)用啟動(dòng)后再檢查。

      若未設(shè)置,或后續(xù)消息發(fā)送的目標(biāo)主題動(dòng)態(tài)變更,云消息隊(duì)列 RocketMQ 版會(huì)對(duì)目標(biāo)主題進(jìn)行動(dòng)態(tài)補(bǔ)充檢驗(yàn)。

  • 約束:對(duì)于事務(wù)消息,預(yù)綁定列表必須設(shè)置,且需要和事務(wù)檢查器一起配合使用。

事務(wù)檢查器

  • 定義:云消息隊(duì)列 RocketMQ 版的事務(wù)消息機(jī)制中,為保證異常場(chǎng)景下事務(wù)的最終一致性,生產(chǎn)者需要主動(dòng)實(shí)現(xiàn)事務(wù)檢查器的接口。具體信息,請(qǐng)參見(jiàn)事務(wù)消息。

  • 發(fā)送事務(wù)消息時(shí),事務(wù)檢查器必須設(shè)置,且需要和預(yù)綁定主題列表一起配合使用。

發(fā)送重試策略定義:生產(chǎn)者在消息發(fā)送失敗時(shí)的重試策略。具體信息,請(qǐng)參見(jiàn)消息發(fā)送重試機(jī)制。

版本兼容性

云消息隊(duì)列 RocketMQ 版服務(wù)端5.x版本開(kāi)始,生產(chǎn)者是匿名的,無(wú)需管理生產(chǎn)者分組(ProducerGroup);對(duì)于歷史版本服務(wù)端3.x和4.x版本,已經(jīng)使用的生產(chǎn)者分組可以廢棄無(wú)需再設(shè)置,且不會(huì)對(duì)當(dāng)前業(yè)務(wù)產(chǎn)生影響。

使用建議

不建議單一進(jìn)程創(chuàng)建大量生產(chǎn)者

云消息隊(duì)列 RocketMQ 版的生產(chǎn)者和主題是多對(duì)多的關(guān)系,支持同一個(gè)生產(chǎn)者向多個(gè)主題發(fā)送消息。對(duì)于生產(chǎn)者的創(chuàng)建和初始化,建議遵循夠用即可、最大化復(fù)用原則,如果有需要發(fā)送消息到多個(gè)主題的場(chǎng)景,無(wú)需為每個(gè)主題都創(chuàng)建一個(gè)生產(chǎn)者。

不建議頻繁創(chuàng)建和銷(xiāo)毀生產(chǎn)者

云消息隊(duì)列 RocketMQ 版的生產(chǎn)者是可以重復(fù)利用的底層資源,類(lèi)似數(shù)據(jù)庫(kù)的連接池。因此不需要在每次發(fā)送消息時(shí)動(dòng)態(tài)創(chuàng)建生產(chǎn)者,且在發(fā)送結(jié)束后銷(xiāo)毀生產(chǎn)者。這樣頻繁的創(chuàng)建銷(xiāo)毀會(huì)在服務(wù)端產(chǎn)生大量短連接請(qǐng)求,嚴(yán)重影響系統(tǒng)性能。

  • 正確示例

    Producer p = ProducerBuilder.build();
      for (int i =0;i<n;i++)
        {
          Message m= MessageBuilder.build();
          p.send(m);
        }
    p.shutdown();
  • 典型錯(cuò)誤示例

    for (int i =0;i<n;i++)
      {
        Producer p = ProducerBuilder.build();
        Message m= MessageBuilder.build();
        p.send(m);
        p.shutdown();
      }