SpringBoot 整合RabbitMQ 之延迟队列实验

在Spring Boot中整合RabbitMQ并实现延迟队列的功能,可以按照以下步骤进行:

  1. 添加依赖:在pom.xml文件中添加RabbitMQ和Spring AMQP相关的依赖。
java 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 配置RabbitMQ连接信息:在application.properties或application.yml文件中配置RabbitMQ的连接信息,包括host、port、username、password等。
java 复制代码
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
  1. 创建消息发送者:创建一个消息发送者类,用于发送消息到RabbitMQ。
java 复制代码
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessageSender {
    
    @Autowired
    private AmqpTemplate amqpTemplate;
    
    public void sendMessage(String message, long delayTime) {
        amqpTemplate.convertAndSend("exchangeName", "routingKey", message, message -> {
            message.getMessageProperties().setDelay((int) delayTime);
            return message;
        });
    }
}
  1. 创建消息接收者:创建一个消息接收者类,用于监听RabbitMQ中的消息。
java 复制代码
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class MessageReceiver {
    
    @RabbitListener(queues = "queueName")
    public void receiveMessage(String message) {
        System.out.println("Received message: " + message);
    }
}
  1. 创建延迟队列配置类:创建一个延迟队列的配置类,用于声明交换机、队列和绑定关系。
java 复制代码
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.CustomExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class DelayedQueueConfig {
    
    @Bean
    public Queue queue() {
        return new Queue("queueName");
    }
    
    @Bean
    public CustomExchange exchange() {
        Map<String, Object> args = new HashMap<>();
        args.put("x-delayed-type", "direct");
        return new CustomExchange("exchangeName", "x-delayed-message", true, false, args);
    }
    
    @Bean
    public Binding binding(Queue queue, CustomExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("routingKey").noargs();
    }
}

以上步骤完成后,就实现了Spring Boot与RabbitMQ的整合,并且可以使用延迟队列发送和接收消息。在发送消息时,通过设置delayTime参数来设置消息的延迟时间。在接收消息时,通过@RabbitListener注解来监听指定的队列,并处理接收到的消息。

相关推荐
nice_lcj5205 分钟前
【从零理解 Spring AI · 14】RAG 的四个环节:加载、切分、向量化、检索
java·spring boot·embedding·向量数据库·rag·spring ai·ai应用开发
学长毕设2 小时前
基于springboot科创竞赛信息平台-附源码
java·spring boot·后端
学长毕设3 小时前
基于SpringBoot公务员考试交流平台-附源码
java·spring boot·后端
AI开源软件6 小时前
SpringBoot3+AI Agent 智能报销:怎样把对话接进现有财务审批系统
spring boot·ai agent·人工确认·ruoyi office·agentos·智能报销·财务审批
学长毕设6 小时前
基于SpringBoot的高校后勤报修管理系统-附源码
java·spring boot·后端
小科先生8 小时前
Java springboot调用数据库的基本流程
java·数据库·spring boot
杨凯凡13 小时前
Spring Boot 链路追踪实战:Micrometer、TraceId 与异步线程上下文传播
java·spring boot·后端
计算机毕设定制辅导-无忧学长14 小时前
《基于Spring Boot的迷游哈游戏综合服务平台的开发》
java·vue.js·spring boot·mysql·迷游哈游戏综合服务平台
梦想恒远1 天前
Spring Boot + LangChain4j 统计 token 成本:ChatModelListener 实测与单价口径
spring boot·后端
howard20051 天前
Spring Boot 版新生报到可视化系统
spring boot·新生报到可视化系统