2013-07-15 29 views

回答

6

是的,這是可能的。

official documentation

隊列的最大長度可通過用一個 非負整數值供給所述x最大長度隊列聲明參數限於 消息的定數。

據我所知,鼠兔的channel.queue_declare有queue_declare具有arguments的參數,它絕對是你想要的。

+1

謝謝,我嘗試了它,但它工作正常,但我對一件事並不滿意:''一旦達到限制,郵件就會從隊列的前面丟棄或死掉,以便爲新郵件騰出空間「'。如果隊列已滿,你知道如何拋出異常嗎?因爲它默默地覆蓋了郵件,例如如果限制設置爲10,並且我發佈了15條郵件[0 - 14],我只能得到5到14的消息。沒有任何警告,那5條消息丟失了 – Vor

+1

沒有機會在隊列中獲取消息編號(除非您使用管理插件),也不會在隊列滿時引發異常。看起來你不需要RabbitMQ來完成這項任務。 – pinepain

+0

@Vor你可以根據https://www.rabbitmq.com/dlx.html設置交易處理「死信字母」。這種方法不會拋出異常,但是當您收到交換機的「死信字母」時,您可以編寫某種類型的代碼來處理它,例如發出警告。 –