一.创建spring boot项目

org.springframework.boot            spring-boot-starter-data-redis        org.springframework.boot            spring-boot-starter-web        com.alibaba            fastjson            1.2.41

二.编辑yml配置文件

server:  port: 7888# 日志配置logging:  config: classpath:log/logback.xml  level:    cn.com.dhcc: info    org.springframework: info    org.springframework.web: info    com.alibaba.nacos.client.naming: errorspring:  redis:     host: localhost     port: 6379     password: *********     database: 1     jedis:      pool:        max-idle: 8        max-active: 8        max-wait: -1        min-idle: 0     timeout: 5000

三.配置Redis

@Configurationpublic class RedisConfiguration {    /**     * 实例化 RedisTemplate 对象     *     * @return     */    @Bean("RedisTemplateS")    public RedisTemplate functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {        RedisTemplate redisTemplate = new RedisTemplate<>();        initDomainRedisTemplate(redisTemplate, redisConnectionFactory);        return redisTemplate;    }    /**     * 设置数据存入 redis 的序列化方式,并开启事务     *      * @param redisTemplate     * @param factory     */    private void initDomainRedisTemplate(@Qualifier("RedisTemplateS") RedisTemplate redisTemplate, RedisConnectionFactory factory) {        // 如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to        // String!        redisTemplate.setKeySerializer(new StringRedisSerializer());        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);        redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);        redisTemplate.setValueSerializer(fastJsonRedisSerializer);        //redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());        //redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());        // 开启事务        redisTemplate.setEnableTransactionSupport(true);        redisTemplate.setConnectionFactory(factory);    }    /**     * 注入封装RedisTemplate @Title: redisUtil @return RedisUtil @date     *      */    @Bean(name = "redisUtils")    public RedisUtils redisUtil(@Qualifier("RedisTemplateS") RedisTemplate redisTemplate) {        RedisUtils redisUtil = new RedisUtils();        redisUtil.setRedisTemplate(redisTemplate);        return redisUtil;    }

四.编写RedisUtil消息发布方法

public class RedisUtils {    private static final Logger log = LoggerFactory.getLogger(RedisUtils.class);    private RedisTemplate redisTemplate;    public void setRedisTemplate(RedisTemplate redisTemplate) {        this.redisTemplate = redisTemplate;    }    public void publish(String channal ,Object obj) {        redisTemplate.convertAndSend(channal,obj );    }}

五.配置消息监听

@Configurationpublic class RedisMessageListener {    /**     * 创建连接工厂     * @param connectionFactory     * @param listenerAdapter     * @return     */    @Bean    public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,                                                   MessageListenerAdapter listenerAdapter,MessageListenerAdapter listenerAdapter2){        RedisMessageListenerContainer container = new RedisMessageListenerContainer();        container.setConnectionFactory(connectionFactory);        //接受消息的key        container.addMessageListener(listenerAdapter,new PatternTopic("phone"));        return container;    }    /**     * 绑定消息监听者和接收监听的方法     * @param receiver     * @return     */    @Bean    public MessageListenerAdapter listenerAdapter(ReceiverRedisMessage  receiver){        return new MessageListenerAdapter(receiver,"receiveMessage");    }    /**     * 注册订阅者     * @param latch     * @return     */    @Bean    ReceiverRedisMessage receiver(CountDownLatch latch) {        return new ReceiverRedisMessage(latch);    }    /**     * 计数器,用来控制线程     * @return     */    @Bean    public CountDownLatch latch(){        return new CountDownLatch(1);//指定了计数的次数 1    }}

六.消息订阅方法

public class ReceiverRedisMessage {    private static final Logger log = LoggerFactory.getLogger(ReceiverRedisMessage.class);    private CountDownLatch latch;    @Autowired    public ReceiverRedisMessage(CountDownLatch latch) {        this.latch = latch;    }    /**     * 队列消息接收方法     *     * @param jsonMsg     */    public void receiveMessage(String jsonMsg) {        log.info("[开始消费REDIS消息队列phone数据...]");        try {            log.info("监听者收到消息:{}", jsonMsg);            JSONObject exJson = JSONObject.parseObject(jsonMsg);            User user = JSON.toJavaObject(exJson, User.class);            System.out.println("转化为对象 :"+user);            log.info("[消费REDIS消息队列phone数据成功.]");        } catch (Exception e) {            log.error("[消费REDIS消息队列phone数据失败,失败信息:{}]", e.getMessage());        }        latch.countDown();    }}

七.定时消息发布测试

@EnableScheduling@Componentpublic class PublisherController {    private static final Logger log = LoggerFactory.getLogger(PublisherController.class);    @Autowired    private RedisUtils redisUtils;    @Scheduled(fixedRate = 5000)    public String pubMsg() {        User user=new User(1, "尚***", 26,"男","陕西省xxxx市xxxxxx县");        redisUtils.publish("phone", user);        log.info("Publisher sendes Topic... ");        return "success";    }}

八.测试结果

九.发布对象User实体

 public class User implements Serializable {    /**     *      */    private static final long serialVersionUID = 1L;    private int id;    private String name;    private int age;    private String sex;    private String address;     .....................}

感谢阅读 关注小编 获得很多好文。

nodejs redis 发布订阅_太赞了:Spring boot+redis实现消息发布与订阅相关推荐

  1. 丰巢回应小学生用照片“刷脸”取件;苹果明年或发布四款 5G 手机;Spring Boot 2.2.0 发布 | 极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

  2. idea springboot 发布webservice 发布服务_太赞了:Spring boot+redis实现消息发布与订阅...

    一.创建spring boot项目 org.springframework.boot spring-boot-starter-data-redis org.springframework.boot s ...

  3. 太好了 | 这篇写的太好了!Spring Boot + Redis 实现接口幂等性

    Hi ! 我是小小,今天是本周的第四篇,第四篇主要内容是 Spring Boot + Redis 实现接口幂等性 介绍 幂等性的概念是,任意多次执行所产生的影响都与一次执行产生的影响相同,按照这个含义 ...

  4. Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 前言 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求, ...

  5. Spring Boot Redis 入门

    本文,我们基于 Spring Boot 2.X 版本. 1. 概述 在快速入门 Spring Boot 整合 Redis 之前,我们先来做个简单的了解.在 Spring 的生态中,我们使用 Sprin ...

  6. java+cache使用方法_java相关:Spring boot redis cache的key的使用方法

    java相关:Spring boot redis cache的key的使用方法 发布于 2020-8-16| 复制链接 摘记: 在数据库查询中我们往往会使用增加缓存来提高程序的性能,@Cacheabl ...

  7. Spring Boot Redis缓存

    Spring Boot Redis缓存 目录[ 隐藏 ] 1 Spring Boot Redis缓存 1.1 Spring Boot Redis项目设置 1.2 Spring Boot Redis缓存 ...

  8. 超完整!Springboot整合redis集群(Sentine),spring boot自动配置集成redis集群(Sentine)

    1.添加maven依赖 注意maven版本依赖,版本要相互匹配,如不知道如何查看相对应的版本时,可进入博主主页查看博主上一篇博文. <parent><groupId>org.s ...

  9. spring boot + redis 配置

    转:https://blog.csdn.net/jaryle/article/details/81480557 1.引入reids包 spring-boot-starter-redis(springb ...

最新文章

  1. mysql如何查看事务日记_MySQL日志查看详解
  2. bzoj千题计划262:bzoj4868: [六省联考2017]期末考试
  3. [一]RabbitMQ-客户端源码之ConnectionFactory
  4. Redis学习笔记~是时候为Redis实现一个仓储了,RedisRepository来了
  5. GARFIELD@01-07-2005
  6. mysql数据库引擎InnoDB和MyISAM
  7. cocos creator基础-(五)cc.Component使用
  8. 说说自动学习,是什么样的境界和体验
  9. html相册魔方代码,魔方相册制作方法现成的魔方相册代码:
  10. Java IO流:(十二)NIONIO2简单介绍
  11. 电商巨头角逐付费会员制,新零售生态或成为决胜关键?
  12. php对数据进行归一化处理方法,12种数据量纲化处理方式
  13. 智能微型断路器的功能有哪些?和网关搭配的作用在哪?
  14. Stata:多元 Logit 模型详解 (mlogit)
  15. js 正则例子 验证美国电话号码
  16. /*输入一个字符串,判断其是否为回文。(回文字符串是指从左到右读和从右到左读完全相同的字符)*/
  17. 09款苹果笔记本图片_简单分辨二手苹果笔记本(MacBook Pro)年份的方法
  18. 信托专替卖家刷淘宝信用 制造虚假交易赚人
  19. 仿手机端京东商城html源码_web前端入门到实战:制作仿京东商城-商品列表商品筛选功能...
  20. 为什么要学python?学习python有哪些好处?

热门文章

  1. 处理时间_1_对时间列进行加减
  2. 表的插入、更新、删除、合并操作_19_通过表关联删除记录
  3. Beautifulsoup 网页表格的解析
  4. h2 java tcpip_windows下创建h2集群,及java集成详细步骤
  5. 99.Shell脚本自启程序并监控(实现全自动监控服务)
  6. SegNet网络简析及caffe工程应用
  7. NVIDIA DIGITS 5.1-dev学习笔记之安装过程记录:Windows10 x64位系统 、 MicroSoft Caffe Master、CUDA 8.0 、Python 2.7
  8. 构造IOCTL命令的学习心得-----_IO, _IOR, _IOW, _IOWR 幻数的理解
  9. AngularJS 的自定义指令
  10. 《大数据存储:MongoDB实战指南》一1.1 什么是大数据