Spring RabbitMQ 消息重试机制

RabbitMQ框架提供了重试机制,只需要简单的配置即可开启,可以提升程序的健壮性。

测试一:重试5次
1spring: 2 rabbitmq: 3 listener: 4 simple: 5 retry: 6 enabled: true 7 max-attempts: 5 # 最大重试次数,包含本身 8 92019-10-14 16:09:03.878 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 102019-10-14 16:09:04.881 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 112019-10-14 16:09:05.886 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 122019-10-14 16:09:06.891 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 132019-10-14 16:09:07.892 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 14 15由结果得知:默认是每秒重试
测试二:重试5次,每隔3秒重试
1spring: 2 rabbitmq: 3 listener: 4 simple: 5 retry: 6 enabled: true 7 max-attempts: 5 # 最大重试次数 8 initial-interval: 3000 # 重试间隔 9 102019-10-14 16:12:12.348 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 112019-10-14 16:12:15.355 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 122019-10-14 16:12:18.362 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 132019-10-14 16:12:21.368 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 142019-10-14 16:12:24.374 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 15 16由结果得知:会按设置的时间间隔进行重试,这里配置的是3
测试三:重试5次,重试间隔根据乘子计算
1spring: 2 rabbitmq: 3 listener: 4 simple: 5 retry: 6 enabled: true 7 multiplier: 2 # 乘子 8 max-attempts: 5 # 最大重试次数 9 initial-interval: 3000 # 第一次和第二次之间的重试间隔 10 112019-10-14 16:15:10.010 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 122019-10-14 16:15:13.014 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 132019-10-14 16:15:19.021 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 142019-10-14 16:15:29.023 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 152019-10-14 16:15:39.026 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 16 17结果展示有点异常,第4次和第5次都是以10秒为重试间隔,原因是默认的最大重试间隔就是10
测试四(推荐):重试5次,重试间隔根据乘子计算,并自定义最大重试间隔
1做如下修改,设置最大重试间隔为1个小时 2 3spring: 4 rabbitmq: 5 listener: 6 simple: 7 retry: 8 enabled: true 9 multiplier: 2 # 乘子 10 max-attempts: 5 # 最大重试次数 11 initial-interval: 3000 # 第一次和第二次之间的重试间隔,后面的用乘子计算 12 max-interval: 3600000 # 最大重试时间间隔 13 142019-10-14 16:50:36.580 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 152019-10-14 16:50:39.588 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 162019-10-14 16:50:45.594 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 172019-10-14 16:50:57.597 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 182019-10-14 16:51:21.603 ERROR o.s.a.r.l.a.RabbitListenerErrorHandler 19 20由结果得知:重试间隔为:3s 6s 12s 24s
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang