首页 > 其他分享 >[异常处理]rabbitMQ 消费端异常进入死循环-消费消息时候抛出错误,控制台一直刷

[异常处理]rabbitMQ 消费端异常进入死循环-消费消息时候抛出错误,控制台一直刷

时间:2023-10-08 21:05:26浏览次数:37  
标签:消费 false 队列 异常 rabbitMQ catch true 死循环

消费端一直在循环 消费消>报错->消费. 问题点也能想的来,因为默认是自动应答,异常了相当于是没有应答,然后就一直异常重新抛回队列进行投递.

解决方案: 第一种方法: 对可能发生异常的部分try、catch;只要事先将问题catch住,就证明消费端已经将该问题消费掉,然后该消息就不存在于队列中,不会造成无限报错的情况。这里,你可以在catch中写一些业务,把这个出现异常的“消息”记录到数据库或者怎么怎么处理,反正是相当于被消费掉了。 第二种方法: "消费者重试"模式: 在配置文件中配置如下:消费者会尝试消费3次,之后丢弃这个消息,不会进入死循环

    listener:
      simple:
        default-requeue-rejected: true #意思是,消息被拒后(即未消费),重新(true)放入队列
        retry:
          enabled: true #是否开启消费者重试(为false时关闭消费者重试,这时消费端代码异常会一直重复收到消息)
          max-attempts: 3
          initial-interval: 5000ms

第三种方法: 只设置 default-requeue-rejected: false #意思是,消息被拒后(即未消费),重新(true)放入队列,当是false 时候不会出现死循环,就抛出一次异常(如果设置了死信队列,就被送到了死信队列;否则直接扔掉)。 image.png 第四种方法:

标签:消费,false,队列,异常,rabbitMQ,catch,true,死循环
From: https://blog.51cto.com/u_16250311/7761223

相关文章

  • 虚拟环境搭建,luffy后台项目创建、目录调整,封装logger,封装全局异常,封装Response,后台数
    1虚拟环境搭建......
  • 造轮子之统一业务异常处理
    异常处理也是我们必不可少的一环,借助Asp.netCore的UseExceptionHandler中间件,我们可以很轻易的配置我们的业务异常处理逻辑。自定义业务异常类首先我们定义一个业务异常类,继承Exception,添加一个Code状态码属性,和MessageData数组,这个数组用于Format异常信息。在实际业务场景中可......
  • JavaSE基础05(方法,重载,调用,类和对象,构造器,封装,继承,方法重写,抽象类,接口,异常)
    面向对象以类的方式组织代码,以对象的组织封装数据;一个Java文件只能有一个public类,必须和文件名一样;java文件里也可以没有public类; 方法的定义方法的使用,修饰符返回值类型方法名(参数类型参数名){方法体return返回值};参数类型包括:基本数据类型和引用数据类......
  • Java异常(Exception)
    Java异常(Exception)Java异常是在程序执行过程中出现的错误或异常情况。异常可以分为编译时异常和运行时异常异常的分类Java中的异常分为两种类型:已检查异常(checkedexception)和运行时异常(runtimeexception)。已检查异常是在编译时被检查的异常,必须在代码中进行处理或声......
  • SpringAMQP—入门案例消息发送(rabbitmq是一个存放消息队列的中转站,发布者将消息队列发
        ......
  • 前端项目异常监控-全局捕获Promise错误
    1.核心全局监听unhandledrejection,该事件为Promise被reject时但没有reject处理器时(没有被catch处理),则触发该事件。( async函数内部的异步任务一旦出现错误,那么就等同于async函数返回的Promise对象被reject。)2.编写辅助函数2.1getLastEvent获取最后一个事件letlastEv......
  • 数据库 "test1007" 的 创建 失败。其他信息: 执行 Transact-SQL 语句或批处理时发生
    问题描述在我使用sqlServer登录名和密码验证登录时,出现了创建数据库错误的信息;问题解决只需要在使用Windows身份验证进行登录后,在服务器角色里面找到dbeavor,然后将我们的登录名添加进去,保存之后,重新启动;之后再使用sqlServer验证登录连接之后,就能够建立好数据库啦!......
  • JAVA——异常
    JAVA——异常父类Exception子类RuntimeException和其他异常Exception:叫做异常,代表程序可能会出现的问题,我们通常会用Exception以及它的子类来封装程序出现的问题运行时异常:RuntimeException及其子类,编译阶段不会出现异常提醒,运行时出现的异常(如:数组越界异常)编译时异......
  • SpringMVC 异常处理
    SpringMVC异常处理异常处理类ExceptionHandlerpackagecom.tobie.globalexception;importorg.springframework.ui.ModelMap;importorg.springframework.web.bind.annotation.ControllerAdvice;importorg.springframework.web.bind.annotation.ExceptionHandler;import......
  • RabbitMQ 集群搭建和仲裁队列的使用
    RabbitMQ是基于Erlang语言开发的,该语言天然支持集群分布式模式,因此部署RabbitMQ集群非常简单。RabbitMQ的集群部署有两种模式:普通集群:又称为标准集群,是一种分布式集群,将队列分散到集群的各个节点,提高整个集群的并发能力。镜像集群:在普通集群的基础上,添加了主从备份功......