MQ延迟队列插件

MQ中的延迟队列应用场景:订单支付模块,用户下单后15分钟未支付自动取消,就可以使用延迟队列。

 

1、代码方式生成交换机和队列

@Configuration
public class DircetQueueConfig {
    @Bean
    public DirectExchange directExchange(){
        return ExchangeBuilder
                .directExchange("delay.direct") // 指定交换机类型和名称
                .delayed() //设置 delay 属性为true
                .durable(true)//持久化
                .build();
    }

    @Bean
    public Queue delayedQueue(){
        return new Queue("delay.queue");
    }

    @Bean
    public Binding delayedBinding(){
        return BindingBuilder.bind(delayedQueue()).to(directExchange()).with("delay");
    }
}

 

 

 

 

2、注解方式生成

 

 

发送消息:

 

 

代码:

  @Test
    public  void  testDelayedMsg(){
        //创建信息
        Message message = MessageBuilder.withBody("hello,javascirpte!".getBytes(StandardCharsets.UTF_8))
                .setHeader("x-delay",10000) //设置延迟时间为10秒
                .build();
        // 消息ID,需要封装到CorrelationData中
        CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
        // 发送消息
        rabbitTemplate.convertAndSend("delay.direct","delay",message,correlationData);
        log.debug("发送信息成功");
    }

 

posted @ 2022-06-09 20:31  追星月?问酒缘。  阅读(134)  评论(0)    收藏  举报