正确配置:

 

@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;
}

 

坑点,这个延迟时间属性设置时毫秒级别,别再 人传人 设置一个 个位数 了:

消费失败时,自动延迟重发,可以看到延迟秒数生效:

Springboot ActiveMQ 消息重发延迟时间 坑记_毫秒级