当前位置: 首页 > news >正文

SpringBoot 整合RabbitMQ 之延迟队列实验

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

  1. 添加依赖:在pom.xml文件中添加RabbitMQ和Spring AMQP相关的依赖。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. 配置RabbitMQ连接信息:在application.properties或application.yml文件中配置RabbitMQ的连接信息,包括host、port、username、password等。
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
  1. 创建消息发送者:创建一个消息发送者类,用于发送消息到RabbitMQ。
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class MessageSender {@Autowiredprivate AmqpTemplate amqpTemplate;public void sendMessage(String message, long delayTime) {amqpTemplate.convertAndSend("exchangeName", "routingKey", message, message -> {message.getMessageProperties().setDelay((int) delayTime);return message;});}
}
  1. 创建消息接收者:创建一个消息接收者类,用于监听RabbitMQ中的消息。
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. 创建延迟队列配置类:创建一个延迟队列的配置类,用于声明交换机、队列和绑定关系。
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 {@Beanpublic Queue queue() {return new Queue("queueName");}@Beanpublic CustomExchange exchange() {Map<String, Object> args = new HashMap<>();args.put("x-delayed-type", "direct");return new CustomExchange("exchangeName", "x-delayed-message", true, false, args);}@Beanpublic Binding binding(Queue queue, CustomExchange exchange) {return BindingBuilder.bind(queue).to(exchange).with("routingKey").noargs();}
}

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

相关文章:

  • Jenkins上跑自动化项目,case出现错误时,导致项目运行时间过长,该如何处理?
  • diffusion 和 gan 的优缺点对比
  • Python系列(9)—— 比较运算符
  • 知识笔记(九十七)———什么是实体符???
  • 【算法专题】动态规划之回文子串问题
  • c#定义特性,通过反射获取特性
  • 基于SSM的网络办公系统(有报告)。Javaee项目。ssm项目。
  • 探索Gin框架:快速构建高性能的Golang Web应用
  • Flutter App 生命周期观察监听
  • 爬虫(一)
  • SpringBoot项目配置SSL后,WebSocket连接失败的解决方案
  • FIR数字滤波器设计
  • 03 Redis之命令(基本命令+Key命令+String型Value命令与应用场景)
  • STM32+ESP8266 实现物联网设备节点
  • 使用IntelliJ IDEA快速搭建springboot 基础模板项目
  • 2017前端实习生面试总结
  • 4. 路由到控制器 - Laravel从零开始教程
  • express + mock 让前后台并行开发
  • JavaScript HTML DOM
  • Java的Interrupt与线程中断
  • Linux下的乱码问题
  • PV统计优化设计
  • python3 使用 asyncio 代替线程
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SQLServer之索引简介
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • yii2权限控制rbac之rule详细讲解
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 开发基于以太坊智能合约的DApp
  • 判断客户端类型,Android,iOS,PC
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 算法-插入排序
  • 小程序开发中的那些坑
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 新版博客前端前瞻
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • puppet连载22:define用法
  • ​2021半年盘点,不想你错过的重磅新书
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​比特币大跌的 2 个原因
  • ​如何在iOS手机上查看应用日志
  • #{}和${}的区别?
  • $jQuery 重写Alert样式方法
  • (12)目标检测_SSD基于pytorch搭建代码
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (三)uboot源码分析
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转) Face-Resources
  • (转)Windows2003安全设置/维护
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)