第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

使用 channel.Get() 而不是 channel.Consume() 有什么缺點(diǎn)嗎?

使用 channel.Get() 而不是 channel.Consume() 有什么缺點(diǎn)嗎?

Go
暮色呼如 2021-06-15 09:16:26
我正在使用streadway 的amqp庫來連接rabbitmq 服務(wù)器。該庫提供了一個(gè) channel.Consume() 函數(shù),它返回一個(gè)“ <-chan Delivery ”。它還提供了一個(gè) channel.Get() 函數(shù),該函數(shù)除其他外返回“交付”。我必須實(shí)現(xiàn)一個(gè)pop()功能,我正在使用channel.Get()。但是,文檔說:"In almost all cases, using Channel.Consume will be preferred."這里的首選是指推薦嗎?使用 channel.Get() 而不是 channel.Consume() 有什么缺點(diǎn)嗎?如果是,我如何使用 channel.Consume() 來實(shí)現(xiàn) Pop() 函數(shù)?
查看完整描述

2 回答

?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

這真的取決于你想做什么。如果您只想從隊(duì)列中獲取一條消息(第一個(gè)),您可能應(yīng)該使用basic.get,如果您打算處理來自隊(duì)列的所有傳入消息 -basic.consume這就是您想要的。

可能不是平臺或庫特定的問題,而是協(xié)議理解問題。

UPD

我不太熟悉它的 go 語言,所以我會盡量給你一些關(guān)于 AMQP 細(xì)節(jié)的簡要介紹并描述用例。

basic.consume有時(shí)可能會遇到麻煩并產(chǎn)生開銷:

有了basic.consume這樣的工作流程:

  1. Sendbasic.consume方法通知broker你想接收消息

    • 雖然這是一個(gè)同步方法,但等待basic.consume-ok來自代理的消息

  2. 開始監(jiān)聽basic.deliver來自服務(wù)器的消息

    • 這是一種異步方法,您應(yīng)該自己注意服務(wù)器上沒有可用消息的情況,例如限制閱讀時(shí)間

有了basic.get這樣的工作流程:

  1. basic.get代理 發(fā)送同步方法

    • 等待basic.get-ok方法,保存消息或basic.empty方法,表示服務(wù)器上沒有可用消息的情況

關(guān)于同步和異步方法的注意事項(xiàng):同步的預(yù)期會有一些響應(yīng),異步是否沒有

關(guān)于basic.qos方法prefetch-count屬性的注意事項(xiàng):當(dāng)no-ack屬性設(shè)置為basic.consume或時(shí),它會被忽略basic.get

Spec 有一個(gè)注釋basic.get:“此方法使用同步對話提供對隊(duì)列中消息的直接訪問,該同步對話是為特定類型的應(yīng)用程序設(shè)計(jì)的,其中同步功能比性能更重要”,適用于連續(xù)消息消費(fèi)。

我的個(gè)人測試表明,在 RabbitMQ 3.0.1、Erlang R14B04 上,使用basic.get(0.38659715652466) 獲取 1000 條消息比逐行獲取 1000 條消息 (0.47398710250854) 快basic.consume15% 以上。

如果您只在主線程中使用一條消息 - 可能您必須使用basic.get.

您仍然可以僅異步使用一條消息,例如在單獨(dú)的線程中或使用某些事件機(jī)制。有時(shí)這對您的機(jī)器資源來說是更好的解決方案,但您必須注意隊(duì)列中沒有可用消息的情況。

如果你必須一一處理消息很明顯basic.consume應(yīng)該使用,我認(rèn)為


查看完整回答
反對 回復(fù) 2021-06-21
  • 2 回答
  • 0 關(guān)注
  • 262 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號