亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

RabbitMQ 循環

RabbitMQ 循環

Go
狐的傳說 2021-12-13 10:36:57
我正在嘗試構建一個系統,其中主服務創建一堆消息并根據路由鍵將它們路由到正確的隊列。我有那個工作,并且消息正在工人/從屬方被消耗。但是,我希望工作人員只從隊列中取出一條消息,而不是將所有 15 條消息都放入其中。我在看這個https://github.com/streadway/amqp/blob/master/channel.go#L616但是我不確定如何設置它所以只發生了一個事件。有任何想法嗎?
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

我沒有使用過 Go AMQP 客戶端,但 AMQP 協議語義在客戶端實現中應該是通用的,所以我會試一試。


您已經正確地將prefetch-size和prefetch-count參數標識為要調整的配置變量。該RabbitMQ的文件說,在這方面的情況如下:1


AMQP 指定了basic.qos一種方法,允許您在使用時限制通道(或連接)上未確認消息的數量(又名“預取計數”)。


如果您希望每個消費者一次只發送一條消息,則應設置prefetch-count為 1,并保持prefetch-size未定義(即 0):


err := channel.Qos(1, 0, false)

if err != nil {

    // ...

}

1 在RabbitMQ 的 AMQP 參考中還有一個更長的描述:


長預取大小


客戶端可以請求提前發送消息,這樣當客戶端處理完一條消息時,后面的消息就已經在本地保存了,而不需要通過通道向下發送。[...]如果消息的大小等于或小于可用的預取大?。ú⑶疫€屬于其他預取限制),則服務器將提前發送消息??梢栽O置為零,表示“沒有特定限制”,盡管其他預取限制可能仍然適用。如果設置了 no-ack 選項,則忽略 prefetch-size。


[...]


短預取計數


根據整個消息指定預取窗口。該字段可以與 prefetch-size 字段結合使用;只有在兩個預取窗口(以及通道和連接級別的窗口)都允許的情況下,才會提前發送消息。[...]


查看完整回答
反對 回復 2021-12-13
  • 1 回答
  • 0 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號