2015-12-21 7756 views
1

我有一個http服務器接收一些消息,並且當消息成功存儲在隊列中時必須回覆200,並且消息未被添加到隊列中。如何讓rabbitmq在隊列滿時拒絕消息?

我希望rabbitmq在隊列達到大小限制時拒絕我的消息。

我該怎麼辦呢?

+0

總之,您嘗試提供異步功能的同步接口。沒有確定的方法來做到這一點,afaik。不要與[dead-lettering](https://www.rabbitmq.com/dlx.html)和[隊列長度限制](https://www.rabbitmq.com/maxlength.html)混淆,消息是從隊列的前面刪除(最舊的消息將首先丟棄)。可能發生的情況是,在目前情況下,RabbitMQ不符合架構要求,或者您必須以不同的方式設計架構。 – pinepain

回答

0

實際上你不能配置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. 
0

如果你想知道這一點,你可以在插入前檢查Q都是。它在相同的頻道上發送請求。斷言Q返回messageCount,它是'就緒'消息的數量。注意:這不包括處於未確認狀態的消息。

如果你不想知道將q的長度,然後在這個問題的1號意見規定:它開始下降之前 多少(就緒)消息隊列可以包含:

x-max-length從頭開始。 (設置「x-max-length」自變量。)

相關問題