Springboot ActiveMQ 消息重发延迟时间 坑记

 正确配置:

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

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

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

猜你喜欢

转载自blog.csdn.net/qq_35387940/article/details/108123068