rabbitmq basicReject/basicNack/basicRecover的区别及说明

 更新时间:2024年01月15日 17:23:45   作者:t0mCl0nes  
这篇文章主要介绍了rabbitmq basicReject/basicNack/basicRecover的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

rabbitmq basicReject/basicNack/basicRecover区别

channel.basicReject(deliveryTag, true);       

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

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

channel.basicNack(deliveryTag, false, true);  

basic.nack方法为不确认deliveryTag对应的消息,第二个参数是否应用于多消息,第三个参数是否requeue,与basic.reject区别就是同时支持多个消息,可以nack该消费者先前接收未ack的所有消息。

nack后的消息也会被自己消费到。

channel.basicRecover(true);  

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

false则消息会重新被投递给自己。

rabbitmq-BasicReject

拒收,是接收端在收到消息的时候响应给RabbitMQ服务的一种命令,告诉服务器不应该由我处理,或者拒绝处理,扔掉。

接收端在发送reject命令的时候可以选择是否要重新放回queue中。

如果没有其他接收者监控这个queue的话,要注意一直无限循环发送的危险。

BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();
channel.BasicReject(ea.DeliveryTag, false);

BasicReject方法第一个参数是消息的DeliveryTag,对于每个Channel来说,每个消息都会有一个DeliveryTag,一般用接收消息的顺序来表示:1,2,3,4 等等。

第二个参数是是否放回queue中,requeue。

BasicReject一次只能拒绝接收一个消息,而BasicNack方法可以支持一次0个或多个消息的拒收,并且也可以设置是否requeue。

channel.BasicNack(3, true, false);

在第一个参数DeliveryTag中如果输入3,则消息DeliveryTag小于等于3的,这个Channel的,都会被拒收

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 线程安全的单例模式的几种实现方法分享

    线程安全的单例模式的几种实现方法分享

    线程安全的单例模式实现有几种思路,个人认为第2种方案最优雅:、饿汉式、借助内部类、普通加锁解决、双重检测,但要注意写法,如果单体模式继续扩展为N元单体模式,那就是对象池模式了
    2014-02-02
  • 详解Spring如何解决循环引用的问题

    详解Spring如何解决循环引用的问题

    在Spring框架中,当两个或多个Bean之间存在相互依赖关系时,可能会导致循环引用的问题,循环引用指的是两个或多个Bean之间互相依赖,形成一个循环链,本文将和大家一起探讨Spring如何解决循环引用的问题,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • Java Date类常用示例_动力节点Java学院整理

    Java Date类常用示例_动力节点Java学院整理

    在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用,需要的朋友可以参考下
    2017-05-05
  • java中判断String类型为空和null的几种方法

    java中判断String类型为空和null的几种方法

    判断一个字符串是否为空或者为null是一个常见的操作,本文主要介绍了java中判断String类型为空和null的几种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java生成二维码的2种实现方法

    Java生成二维码的2种实现方法

    这篇文章主要给大家介绍了关于Java生成二维码的2种实现方法,二维码的实质就是一个链接地址,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • SpringBoot如何进行对象复制的实践

    SpringBoot如何进行对象复制的实践

    本文主要介绍了SpringBoot 如何进行对象复制,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Java中的内部类使用详情

    Java中的内部类使用详情

    说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟
    2022-03-03
  • java解析Excel/导入信息到Excel方式

    java解析Excel/导入信息到Excel方式

    这篇文章主要介绍了java解析Excel/导入信息到Excel方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java中的关键字之final详解

    Java中的关键字之final详解

    这篇文章主要介绍了Java中的关键字之final详解,final关键字算是个高频的java基础问题了,面试官可能会问说说final,final修饰的抽象类能够被继承吗等等,下面汇总关于final关键字的知识点,需要的朋友可以参考下
    2024-01-01
  • maven多模块项目依赖管理与依赖继承详解

    maven多模块项目依赖管理与依赖继承详解

    这篇文章主要介绍了maven多模块项目依赖管理与依赖继承详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12

最新评论