我有一個http服務器接收一些消息,並且當消息成功存儲在隊列中時必須回覆200,並且消息未被添加到隊列中。如何讓rabbitmq在隊列滿時拒絕消息?
我希望rabbitmq在隊列達到大小限制時拒絕我的消息。
我該怎麼辦呢?
我有一個http服務器接收一些消息,並且當消息成功存儲在隊列中時必須回覆200,並且消息未被添加到隊列中。如何讓rabbitmq在隊列滿時拒絕消息?
我希望rabbitmq在隊列達到大小限制時拒絕我的消息。
我該怎麼辦呢?
實際上你不能配置RabbitMq就是這樣。但你可以編程檢查隊列的大小,如:
`DeclareOk queueOkStatus = channel.queueDeclare(queueOutputName, true, false, false, null);
if(queueOkStatus.getMessageCount()==0){//your logic here}`
but be careful, because this method returns number of non-acked messages in queue.
如果你想知道這一點,你可以在插入前檢查Q都是。它在相同的頻道上發送請求。斷言Q返回messageCount,它是'就緒'消息的數量。注意:這不包括處於未確認狀態的消息。
如果你不想知道將q的長度,然後在這個問題的1號意見規定:它開始下降之前 多少(就緒)消息隊列可以包含:
x-max-length從頭開始。 (設置「x-max-length」自變量。)
總之,您嘗試提供異步功能的同步接口。沒有確定的方法來做到這一點,afaik。不要與[dead-lettering](https://www.rabbitmq.com/dlx.html)和[隊列長度限制](https://www.rabbitmq.com/maxlength.html)混淆,消息是從隊列的前面刪除(最舊的消息將首先丟棄)。可能發生的情況是,在目前情況下,RabbitMQ不符合架構要求,或者您必須以不同的方式設計架構。 – pinepain