美文网首页Spring Boot核心教程
SpringBoot非官方教程 | 第十四篇:在springbo

SpringBoot非官方教程 | 第十四篇:在springbo

作者: 程序员手札 | 来源:发表于2018-07-03 09:52 被阅读35次

    https://blog.csdn.net/forezp/article/details/70341818
    本文出自方志朋的博客

    这篇文章主要讲述如何在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

    写在最后

    欢迎关注喜欢、和点赞后续将推出更多的spring cloud教程,敬请期待。
    欢迎关注我的微信公众号获取更多更全的学习资源,视频资料,技术干货!

    欢迎扫码关注

    公众号回复“学习”,拉你进程序员技术讨论群。

    公众号回复“视频”,领取800GJava视频学习资源。

    java学习全套
    820G资源

    公众号回复“领取资源”,领取1T前端Java产品经理微信小程序Python等资源合集大放送。

    全栈资料
    接近1T资源

    公众号回复“慕课”,领取1T慕课实战学习资源。

    慕课实战大全
    1061G资源

    公众号回复“实战”,领取750G项目实战学习资源。

    前后端实战项目
    750实战资源

    公众号回复“面试”,领取8G面试实战学习资源。

    JAVA面试实战视频
    8G面试资源

    相关文章

      网友评论

        本文标题:SpringBoot非官方教程 | 第十四篇:在springbo

        本文链接:https://www.haomeiwen.com/subject/zxkduftx.html