Springboot 集成Rabbitmq之延时队列

1.首先确保已经引入了Spring AMQP和RabbitMQ的相关依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2. 创建一个普通队列并设置TTL(消息过期时间),同时声明一个死信交换机和死信队列,当普通队列中的消息过期后会自动转发到死信队列:

@Bean
Queue normalQueue() {
    Map<String, Object> args = new HashMap<>();
    args.put("x-message-ttl", 60000); // 消息有效期为60秒
    args.put("x-dead-letter-exchange", "delayExchange"); // 设置死信交换机
    args.put("x-dead-letter-routing-key", "delayQueue"); // 设置死信路由键
    return new Queue("normalQueue", true, false, false, args);
}

@Bean
Queue delayQueue() {
    return new Queue("delayQueue", true, false, false);
}

@Bean
DirectExchange delayExchange() {
    return new DirectExchange("delayExchange");
}

@Bean
Binding delayBinding(DirectExchange delayExchange, Queue delayQueue) {
    return BindingBuilder.bind(delayQueue).to(delayExchange).with("delayQueue");
}

3.在delayQueue上监听消息,这样当消息从normalQueue过期转移到delayQueue后,消费者就会接收到这条消息:

@RabbitListener(queues = "delayQueue")
public void processDelayMessage(String message) {
    System.out.println("Processing delayed message: " + message);
    // 在这里处理延时后的消息
}

4.发送消息到normalQueue:

@Autowired
private RabbitTemplate rabbitTemplate;

public void sendMessage(String message) {
    rabbitTemplate.convertAndSend("normalQueue", message);
}

以上代码示例中,正常的消息会被发送到normalQueue,如果在指定的TTL时间内未被消费,则该消息会作为死信转发到delayExchange,然后根据路由键路由到delayQueue,最终由监听delayQueue的消费者进行处理,从而实现了消息的延时处理。

相关推荐

  1. Springboot 集成Rabbitmq队列

    2024-04-08 05:44:08       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 05:44:08       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 05:44:08       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 05:44:08       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 05:44:08       20 阅读

热门阅读

  1. hadoop streaming及hadoop官方文档

    2024-04-08 05:44:08       16 阅读
  2. 实景户外剧本杀小程序儿童亲子小程序开发搭建

    2024-04-08 05:44:08       14 阅读
  3. 索尼相机照片清理软件

    2024-04-08 05:44:08       19 阅读
  4. 前端 小程序框架UniApp

    2024-04-08 05:44:08       14 阅读
  5. PCL 点到圆柱的距离(3D)

    2024-04-08 05:44:08       15 阅读
  6. 反转链表 II力扣刷题

    2024-04-08 05:44:08       18 阅读
  7. js和ts中的null与undefined

    2024-04-08 05:44:08       16 阅读