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队列使用教程
如何将凡科建站内容保存为本地文件?

