微服务 教程
1085个小节阅读:196.5k
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
创建延迟交换机和延迟队列
xxxxxxxxxx
public class RabbitConfig2 {
public final String DELAYED_EXCHANGE = "delayed_exchange";
public final String DELAYED_QUEUE = "delayed_queue";
//1.延迟交换机
DELAYED_EXCHANGE) (
public Exchange delayedExchange() {
// 创建自定义交换机
Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "topic"); // topic类型的延迟交换机
return new CustomExchange(DELAYED_EXCHANGE, "x-delayed-message", true, false, args);
}
//2.延迟队列
DELAYED_QUEUE) (
public Queue delayedQueue() {
return QueueBuilder
.durable(DELAYED_QUEUE)
.build();
}
// 3.绑定
public Binding bindingDelayedQueue( (DELAYED_QUEUE) Queue queue, (DELAYED_EXCHANGE) Exchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with("order_routing").noargs();
}
}
编写下单的控制器方法
xxxxxxxxxx
"/place2/{orderId}") (
public String placeOrder2( String orderId) {
System.out.println("处理订单数据...");
// 设置消息延迟时间为10秒
MessagePostProcessor messagePostProcessor = new MessagePostProcessor() {
public Message postProcessMessage(Message message) throws AmqpException {
message.getMessageProperties().setDelay(10000);
return message;
}
};
// 将订单id发送到订单队列
rabbitTemplate.convertAndSend("delayed_exchange", "order_routing", orderId, messagePostProcessor);
return "下单成功,修改库存";
}
编写延迟队列的消费者
xxxxxxxxxx
queues = "delayed_queue") (
public void listenMessage(String orderId){
System.out.println("查询"+orderId+"号订单的状态,如果已支付则无需处理,如果未支付则需要回退库存");
}
实时效果反馈
1. 在RabbitMQ中,使用延迟插件后,延迟交换机的类型是
A direct
B fanout
C topic
D x-delayed-message
答案
1=>D