SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
来源:互联网 发布:淘宝小崔韩代 编辑:程序博客网 时间:2024/06/09 18:45
转载请标明出处:
http://blog.csdn.net/forezp/article/details/71023652
本文出自方志朋的博客
这篇文章主要讲述如何在springboot中用reids实现消息队列。
准备阶段
- 安装redis,可参考我的另一篇文章,5分钟带你入门Redis。
- java 1.8
- maven 3.0
- idea
环境依赖
创建一个新的springboot工程,在其pom文件,加入spring-boot-starter-data-redis依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
创建一个消息接收者
REcevier类,它是一个普通的类,需要注入到springboot中。
public class Receiver { private static final Logger LOGGER = LoggerFactory.getLogger(Receiver.class); private CountDownLatch latch; @Autowired public Receiver(CountDownLatch latch) { this.latch = latch; } public void receiveMessage(String message) { LOGGER.info("Received <" + message + ">"); latch.countDown(); }}
注入消息接收者
@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); }
注入消息监听容器
在spring data redis中,利用redis发送一条消息和接受一条消息,需要三样东西:
- 一个连接工厂
- 一个消息监听容器
- Redis template
上述1、3步已经完成,所以只需注入消息监听容器即可:
@Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("chat")); return container; } @Bean MessageListenerAdapter listenerAdapter(Receiver receiver) { return new MessageListenerAdapter(receiver, "receiveMessage"); }
测试
在springboot入口的main方法:
public static void main(String[] args) throws Exception{ ApplicationContext ctx = SpringApplication.run(SpringbootRedisApplication.class, args); StringRedisTemplate template = ctx.getBean(StringRedisTemplate.class); CountDownLatch latch = ctx.getBean(CountDownLatch.class); LOGGER.info("Sending message..."); template.convertAndSend("chat", "Hello from Redis!"); latch.await(); System.exit(0); }
先用redisTemplate发送一条消息,接收者接收到后,打印出来。启动springboot程序,控制台打印:
2017-04-20 17:25:15.536 INFO 39148 — [ main] com.forezp.SpringbootRedisApplication : Sending message…
2017-04-20 17:25:15.544 INFO 39148 — [ container-2] com.forezp.message.Receiver : 》Received
源码下载:
https://github.com/forezp/SpringBootLearning
参考资料
messaging-redis
优秀文章推荐:
- 更多springboot 教程:springBoot非官方教程 | 文章汇总
- 更多springcoud 教程:史上最简单的 SpringCloud 教程 | 文章汇总
1 0
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot非官方教程 | 第九篇: springboot整合Redis
- SpringBoot 基于Redis快速实现消息队列
- 12.springboot使用redis的订阅功能实现消息队列
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- SpringBoot非官方教程 | 第十七篇:上传文件
- SpringBoot非官方教程 | 第二十三篇: 异步方法
- hadoop报错解决方案---安装系列三
- 做游戏,学编程(C语言) 3 利用函数对飞机游戏进行重构
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- PHP设计模式系列(十一):状态模式
- 做游戏,学编程(C语言) 4 flappy bird
- SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列
- 文章标题
- JAVA之键盘,鼠标监听事件
- java中讲讲InputStreamReader的用法,举例?
- 程序员创业的情怀和梦想
- 树的子结构
- 做游戏,学编程(C语言) 5 数组之生命游戏
- laravel学习笔记(4)— 数据库操作之
- 面对压力,逃避还是面对?