基本拒绝,基本确认和基本nack的定义以及为什么应该使用它们?

时间:2017-04-14 06:25:48

标签: rabbitmq

我是rabbitmq的新手。我正在努力理解以下功能的含义。有人可以解释或给出链接,以帮助我理解以下功能:

RabbitMQ.Client.Events.BasicDeliverEventArgs e = (RabbitMQ.Client.Events.BasicDeliverEventArgs)consumer.Queue.Dequeue();

Model.BasicReject(e.DeliveryTag, false);
Model.BasicReject(e.DeliveryTag, true);

Model.BasicAck(e.DeliveryTag, false);
Model.BasicAck(e.DeliveryTag, false);

 Model.BasicNack(e.DeliveryTag, true, true);
 Model.BasicNack(e.DeliveryTag, false, false);

我读过BasicAck / BasicNack拒绝多条消息。是否使用Ack / Nack并将多个标志设置为false?

发布到死信之后,我们应该拒绝它还是使用BasicNack?我们应该重新发布消息吗?

1 个答案:

答案 0 :(得分:1)

问:“我读过BasicAck / BasicNack会拒绝多条消息。使用Ack / Nack并将多个标志设置为false是否有任何用处?”

答:如果你有1的预取,那么没有。如果你有一个更高的预取,并且你做多个确认并不复杂,那么去吧。通过多次确认,性能更好。但要注意不要承认低于之前承认的交货标签。

问:“在发布到死信之后,我们应该拒绝它或使用BasicNack?我们应该重新发布消息吗?”

答:使用带有requeue = false的BasicNack,如果队列配置了一个,它将把它发送到死信交换。如果你不想要一个死信交换但想要将失败的消息转发到另一个交易所,那么请记下该消息并发布到另一个交易所。