1 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
我沒有使用過 Go AMQP 客戶端,但 AMQP 協(xié)議語義在客戶端實現(xiàn)中應該是通用的,所以我會試一試。
您已經(jīng)正確地將prefetch-size和prefetch-count參數(shù)標識為要調(diào)整的配置變量。該RabbitMQ的文件說,在這方面的情況如下:1
AMQP 指定了basic.qos一種方法,允許您在使用時限制通道(或連接)上未確認消息的數(shù)量(又名“預取計數(shù)”)。
如果您希望每個消費者一次只發(fā)送一條消息,則應設(shè)置prefetch-count為 1,并保持prefetch-size未定義(即 0):
err := channel.Qos(1, 0, false)
if err != nil {
// ...
}
1 在RabbitMQ 的 AMQP 參考中還有一個更長的描述:
長預取大小
客戶端可以請求提前發(fā)送消息,這樣當客戶端處理完一條消息時,后面的消息就已經(jīng)在本地保存了,而不需要通過通道向下發(fā)送。[...]如果消息的大小等于或小于可用的預取大小(并且還屬于其他預取限制),則服務器將提前發(fā)送消息??梢栽O(shè)置為零,表示“沒有特定限制”,盡管其他預取限制可能仍然適用。如果設(shè)置了 no-ack 選項,則忽略 prefetch-size。
[...]
短預取計數(shù)
根據(jù)整個消息指定預取窗口。該字段可以與 prefetch-size 字段結(jié)合使用;只有在兩個預取窗口(以及通道和連接級別的窗口)都允許的情況下,才會提前發(fā)送消息。[...]
- 1 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報