企业级 SpringBoot 教程-在springboot中用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); }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java 并发多线程 锁的分类概念介绍 多线程下篇(二)
java 并发多线程 锁的分类概念介绍 多线程下篇(二) 接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日本人炸桥?炸路?的场景,这只是阻止日本人的一种手段,如果大喊一声TMD滚蛋,日本人就走了,还炸桥干嘛? 用锁是为了线程安全,而不是为了上锁,上锁是一种途径,独占锁则是“上锁”的其中一种形式 如果有更优雅的上锁方式,自然不必要每次都简单粗暴的使用独占锁,不是嘛 从几个维度可以大致分为下面几种 分类是以锁为核心,而延展出来的优雅的使用方式 原文地址: java 并发多线程 锁的分类概念介绍 多线程下篇(二) 乐观锁与悲观锁 乐观就像小米的宣传语-永远相信,美好的事情即将发生; 而悲观就像透过有色眼睛看世界,永远都带有颜色; 对应到程序中 使用锁是为了什么?因为线程之间会共享数据,共享数据就一定会出现问题吗?当然是概率的 两个人去同一个水井打水,如果每次都错开,那么美好一直存在 如果天天赶到同一个时间点,我相信早晚必有一战..... 所...
- 下一篇
企业级 SpringBoot 教程 -springboot集成spring cache
声明式缓存 Spring 定义 CacheManager 和 Cache 接口用来统一不同的缓存技术。例如 JCache、 EhCache、 Hazelcast、 Guava、 Redis 等。在使用 Spring 集成 Cache 的时候,我们需要注册实现的 CacheManager 的 Bean。 Spring Boot 为我们自动配置了 JcacheCacheConfiguration、 EhCacheCacheConfiguration、HazelcastCacheConfiguration、GuavaCacheConfiguration、RedisCacheConfiguration、SimpleCacheConfiguration 等。 默认使用 ConcurrenMapCacheManager 在我们不使用其他第三方缓存依赖的时候,springboot自动采用ConcurrenMapCacheManager作为缓存管理器。 环境依赖 在pom文件引入spring-boot-starter-cache环境依赖: <dependency> <groupId&...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Red5直播服务器,属于Java语言的直播服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池