rabbitMQ延时队列之RabbitTemplate
直接撸代码
//定义交换机/队列;并绑定 routingKey
/**
*定义延时交换机
*/
@Bean
public CustomExchange delayedExchange() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("x-delayed-type", "direct");
return new CustomExchange("delayed_exchange", "x-delayed-message", true, false, map);
}
/**
*定义延时队列
*/
@Bean
public Queue delayedQueue(){
return new Queue("delayed_queue",true);
}
/**
*绑定队列
*/
@Bean
public Binding queueBinding(){
return BindingBuilder.bind(delayedQueue()).to(delayedExchange()).with("delayed_routingKey").noargs();
}
//发送延时消息方法
/**
*此处使用的header,所以延时支持Long
*@param delayedTime 延时时间,毫秒值
*/
public void sendDelayedMessage(String exchange,String routingKey,Long delayedTime,String msg){
rabbitTemplate.convertAndSend(exchange,routingKey,msg,message->{
message.getMessageProperties().setHeader("x_delay",delayedTime);
return message;
});
}