【RabbitMQ 】rabbitmq basicReject / basicNack / basicRecover区别

区别

channel.basicReject(deliveryTag, true);

basic.reject方法拒绝deliveryTag对应的消息,第二个参数是否requeue,true则重新入队列,否则丢弃或者进入死信队列。

该方法reject后,该消费者还是会消费到该条被reject的消息。


```java channel.basicNack(deliveryTag, false, true); ``` basic.nack方法为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue,与basic.reject区别就是同时支持多个消息,可以nack该消费者先前接收未ack的所有消息。nack后的消息也会被自己消费到。

第二个参数,怎么理解basic.nack多消息,比如现在有多条消息去调用这个nack方法,他是怎么执行的?

有个先后顺序,就是调用nack时,之前所有没有ack的消息都会被标记为nack,多条消息同时调用,则调用的这个语句执行前如果还有未执行回复确认的消息就会被回复nack,后续的消息回复nack可能只作用于当条消息。

原因是发送过程是异步的,因此后发的消息有可能先收到ack,那么前面的仍是未签收的,因此先收到的ack 可以签收多条。


channel.basicRecover(true);

basic.recover是否恢复消息到队列,参数是是否requeue,true则重新入队列,并且尽可能的将之前recover的消息投递给其他消费者消费,而不是自己再次消费。false则消息会重新被投递给自己。

参考

rabbitmq basicReject / basicNack / basicRecover区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值