步骤:
1. 把资料中的 rabbitmq_delayed_message_exchange-3.9.0.ez 复制到docker的mq容器的插件目录
2. 执行命令 docker exec -it mq rabbitmq-plugins enable rabbitmq_delayed_message_exchange
在Java代码中配置延迟交换机:(图的左边是注解方式,右下角是@Bean的方式)
比之前多加了一个 delayed = "true"
生产者给MQ中的延迟交换机发送 延迟消息:
代码示例:
1. 用注解方式声明出 可以接收延迟消息的交换机 和 队列:
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "delay.queue", durable = "true"),//创建队列(durable参数:队列要不要持久化)
exchange = @Exchange(name = "delay.direct", type = ExchangeTypes.DIRECT, delayed = "true"),//创建交换机。delayed=true:该交换机是延迟交换机,可以接收延迟消息
key = "hi" //RoutingKey 可以写多个,也可以写一个
))
public void listenDelayQueue(String msg) {
System.out.println("消费者接收到消息:" + msg);
}
2. 发送者给交换机发消息
@GetMapping("/mq08")
public void sendDelayMessage(){
//第四个参数:后置消息处理器
rabbitTemplate.convertAndSend("delay.direct", "hi", "hui~", new MessagePostProcessor() {
@Override
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setDelay(10000);//10s
return message;
}
});
log.info("消息发送成功");
}
标签:插件,delayed,RabbitMQ,交换机,消息,message,true,延迟 From: https://www.cnblogs.com/gagaya2/p/17875594.html