当队列已满时,如何使 rabbitmq 拒绝消息?
How to make rabbitmq to refuses messages when a queue is full?
我有一个接收一些消息的 http 服务器,当消息成功存储在队列中时必须回复 200,而 500 是消息未添加到队列中。
我希望 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 returns messageCount 是 'Ready' 消息的数量。注意:这不包括处于未确认状态的消息。
如果您不想知道 Q 长度,则如问题的第一条评论中所述:
x-max-length :
一个队列在开始从头部丢弃消息之前可以包含多少(就绪)消息。
(设置 "x-max-length" 参数。)
我有一个接收一些消息的 http 服务器,当消息成功存储在队列中时必须回复 200,而 500 是消息未添加到队列中。
我希望 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 returns messageCount 是 'Ready' 消息的数量。注意:这不包括处于未确认状态的消息。
如果您不想知道 Q 长度,则如问题的第一条评论中所述:
x-max-length : 一个队列在开始从头部丢弃消息之前可以包含多少(就绪)消息。 (设置 "x-max-length" 参数。)