正确配置:
@Bean public RedeliveryPolicy redeliveryPolicy(){ RedeliveryPolicy redeliveryPolicy= new RedeliveryPolicy(); //是否在每次尝试重新发送失败后,增长这个等待时间 redeliveryPolicy.setUseExponentialBackOff(true); //重发次数,默认为6次 redeliveryPolicy.setMaximumRedeliveries(3); //重发时间间隔,默认为1秒 !!!! redeliveryPolicy.setInitialRedeliveryDelay(2000); //第一次失败后重新发送之前等待2000毫秒,第二次失败再等待2000 * 2毫秒,这里的2就是value redeliveryPolicy.setBackOffMultiplier(2); //是否避免消息碰撞 redeliveryPolicy.setUseCollisionAvoidance(false); //设置重发最大拖延时间-1 表示没有拖延只有UseExponentialBackOff(true)为true时生效 redeliveryPolicy.setMaximumRedeliveryDelay(-1); return redeliveryPolicy; }
坑点,这个延迟时间属性设置时毫秒级别,别再 人传人 设置一个 个位数 了:
消费失败时,自动延迟重发,可以看到延迟秒数生效: