SpringBoot利用redis集成消息队列的方法

发布时间 - 2026-01-11 02:59:45    点击率:

一、pom文件依赖

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

二、创建消息接收者

变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。

@Autowired public Receiver(CountDownLatch latch) { 
this.latch = latch; 
} 
public void receiveMessage(String message) { 
LOGGER.info("收到的消息: <" + message + ">"); latch.countDown(); } }

以上基本条件达成后,以下是实现的三要素:

一个连接工厂

一个消息监听容器

Redis template

三、在application.java注入消息接收者

@Bean Receiver receiver(CountDownLatch latch) { 
return new Receiver(latch); } 
@Bean CountDownLatch latch() { 
return new CountDownLatch(1); } 
@Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { 
return new StringRedisTemplate(connectionFactory); }

四、注入消息监听容器

//必要的redis消息队列连接工厂
@Bean
Receiver receiver(CountDownLatch latch) {
return new Receiver(latch);
}
//必要的redis消息队列连接工厂
@Bean
CountDownLatch latch() {
return new CountDownLatch(1);
}
//redis模板
@Bean
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
}
//注入消息监听器容器
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(listenerAdapter, new PatternTopic("msg"));
return container;
}
//注入消息监听器容器
@Bean
MessageListenerAdapter listenerAdapter(Receiver receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage");
}

五、单元测试

import java.util.concurrent.CountDownLatch;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import com.Application;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class MsgQueueTest {
@Autowired
protected ApplicationContext ctx;
private static final Logger logger = LoggerFactory.getLogger(MsgQueueTest.class);
@Test
public void SendMsg() {
StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class);
CountDownLatch latch = ctx.getBean(CountDownLatch.class);
logger.info("我要发送消息咯...");
template.convertAndSend("msg", "欢迎使用redis的消息队列!");
try {
//发送消息连接等待中
logger.info("消息正在发送...");
latch.await();
} catch (InterruptedException e) {
logger.info("消息发送失败...");
}
}
}

总结

以上所述是小编给大家介绍的SpringBoot利用redis集成消息队列的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# spring  # boot  # redis  # 消息队列  # Springboot3+Redis实现消息队列的多种方法小结  # SpringBoot集成Redisson实现消息队列的示例代码  # SpringBoot使用Redis Stream实现轻量消息队列的示例代码  # SpringBoot使用Redis实现消息队列的方法小结  # springboot整合redis之消息队列  # SpringBoot集成Redis实现消息队列的方法  # SpringBoot集成Redis消息队列的实现示例  # 小编  # 发送消息  # 我要  # 在此  # 给大家  # 所述  # 给我留言  # 感谢大家  # 基本条件  # 疑问请  # 有任何  # 单元测试  # void  # message  # String  # receiveMessage  # public  # set  # Autowired  # latch 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python文件流缓冲机制_IO性能解析【教程】  移动端脚本框架Hammer.js  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  重庆市网站制作公司,重庆招聘网站哪个好?  EditPlus中的正则表达式 实战(4)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  利用JavaScript实现拖拽改变元素大小  javascript基于原型链的继承及call和apply函数用法分析  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  bootstrap日历插件datetimepicker使用方法  Laravel怎么在Controller之外的地方验证数据  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  高端网站建设与定制开发一站式解决方案 中企动力  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel怎么使用artisan命令缓存配置和视图  网站制作大概多少钱一个,做一个平台网站大概多少钱?  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Python文件异常处理策略_健壮性说明【指导】  如何快速生成ASP一键建站模板并优化安全性?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Angular 表单中正确绑定输入值以确保提交与验证正常工作  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  JavaScript中的标签模板是什么_它如何扩展字符串功能  Python制作简易注册登录系统  Laravel如何创建自定义Facades?(详细步骤)  JavaScript如何实现倒计时_时间函数如何精确控制  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel如何与Pusher实现实时通信?(WebSocket示例)  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  网站页面设计需要考虑到这些问题  iOS验证手机号的正则表达式  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  lovemo网页版地址 lovemo官网手机登录  如何在Windows 2008云服务器安全搭建网站?  Laravel如何实现API速率限制?(Rate Limiting教程)  如何选择可靠的免备案建站服务器?  如何有效防御Web建站篡改攻击?  如何快速上传建站程序避免常见错误?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel中的Facade(门面)到底是什么原理  如何快速搭建FTP站点实现文件共享?  大型企业网站制作流程,做网站需要注册公司吗?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  如何将凡科建站内容保存为本地文件?