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

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

我如何消費來自rabbitmq的一批消息?

我如何消費來自rabbitmq的一批消息?

Go
萬千封印 2023-06-05 17:34:43
在消費之前我設置consumeChannel.Qos(5,0,false)但仍然只收到一條消息,而不是一包五條。我做錯了什么?完整代碼:consumeChannel.Qos(5,0,false)msgs, _ := consumeChannel.Consume("ticks", "", false, false, false, false, nil, )for d := range msgs {    println("Received a message: %s", d.Body)    println("Done")    //here will be some extra multiple message handling    //d.Ack(false)}
查看完整描述

1 回答

?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

但仍然只收到一條消息,而不是一包五條。我做錯了什么?

您不了解 RabbitMQ 和 QoS / prefetch 是如何工作的(文檔),或者它如何與rangeGo 客戶端的操作員交互。

QoS 并不意味著“批量發送消息”,它對通道上未確認消息的數量設置了限制。如果您要刪除d.Ack代碼中的調用并for無限期地運行循環,它只會運行 5 次迭代,然后停止,因為 RabbitMQ 屆時將停止向您的消費者傳遞消息。

我沒有查看代碼,但我假設您使用的 Go 客戶端是以這樣一種方式編寫的:一旦消息被接收和解碼,它就會被傳送到頻道msgs。當您在循環中確認消息時,它向 RabbitMQ 表明可以將另一條消息傳遞到該通道。

我建議重新編寫您的代碼以跟蹤通過通道傳遞了多少消息msgs,完成您的工作,然后使用多重確認同時確認它們。

查看完整回答
反對 回復 2023-06-05
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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