使用场景
发送延时消息
安装
查看插件目录
rabbitmq-plugins directories -s
进入插件目录
cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.10.0/plugins
下载插件(版本和 rabbitmq 一致)
wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/3.10.0/rabbitmq_delayed_message_exchange-3.10.0.ez
安装插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange
重启
service rabbitmq-server restart
配置交换机、队列、路由键
@Bean
public CustomExchange delayedExchange() {
Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
CustomExchange customExchange = new CustomExchange(YOUR_EXCHANGE_NAME, "x-delayed-message", true, false, args);
return customExchange;
}
@Bean
public Queue delayedQueue() {
return new Queue(YOUR_QUEUE_NAME);
}
@Bean
public Binding delayedBinding() {
return BindingBuilder.bind(delayedQueue()).to(delayedExchange()).with(YOUR_ROUTING_KEY).noargs();
}
发送延时消息
public void sendDelayed(String message, Long millis) {
rabbitTemplate.convertAndSend(YOUR_EXCHANGE_NAME, YOUR_ROUTING_KEY, message, msg -> {
msg.getMessageProperties().setHeader("x-delay", millis);
return msg;
});
}