延迟消息 前提条件 RabbitMQ 版本 ≥ 3.8 启用官方插件: rabbitmqplugins enable rabbitmqdelayedmessageexchange 天翼云RabbitMQ默认启用延迟交换器交换器插件,无需操作 使用步骤 1. 声明 xdelayedmessage 类型交换机 2. 指定底层路由类型(xdelayedtype) 3. 发送消息时在 Header 中设置 xdelay(毫秒) 代码示例 java //声明延时交换机 Map args new HashMap<>(); args.put("xdelayedtype","direct"); channel.exchangeDeclare("delayedexchange","xdelayedmessage",true,false,args); // 声明并绑定队列 channel.queueDeclare("targetqueue",true,false,false,null); channel.queueBind("targetqueue","delayedexchange","routingkey"); //发送延时消息(延迟 5 秒) Map headers new HashMap<>(); headers.put("xdelay",5000); AMQP.BasicProperties props new AMQP.BasicProperties.Builder() .headers(headers) .build(); channel.basicPublish("delayedexchange","routingkey",props,"延时消息".getBytes(StandardCharsets.UTF8)); 特点说明 延迟精度高,使用方式直观 延迟逻辑在 Exchange 层完成 依赖插件及 RabbitMQ 版本兼容性 注意事项 精度与可靠性 DLX + TTL 可能存在毫秒级到秒级误差 插件方案 延迟精度更高,更适合严格定时场景 资源消耗 延时消息在到期前会占用 Broker 内存 大量长延时消息需重点监控: 队列堆积 内存水位 磁盘使用率 消息顺序 延时消息可能打乱原始发送顺序 对顺序敏感的业务需在消费端自行处理