SpringBoot整合Redis实现消息发布订阅

SpringBoot整合Redis实现消息发布订阅

Redis常量配置

配置消息处理器

上述为消息处理器,目前无用,需要后面配置。 PushUtil为个人封装的个推消息推送工具类,可以删除,根据自己逻辑决定相关操作。 上述一共写了四种主题,以其中一种主题为例,实际项目中按照自己需求更改

配置订阅消息处理

注意,这个类有两点需要注意:1、必须实现序列化。2、必须有无参构造方法。

配置RedisMessageListener配置类

注释应该已经足够,注意一定要修改序列化方法,否则使用的是默认是String类型的序列化方法,ReceiverServiceImpl方法接收到String类型的参数还需要再次转化为指定类!!!!

发布消息

redisTemplate.convertAndSend(RedisConstant.TOPIC_COLLECT,
					new MessageCollect(id, userPublish.getUserId(), userName, title, userId));

在使用的时候需要将构造函数的参数设置成自己的,这样项目启动之后执行上述方法后ReceiverServiceImpl的collectReceive方法就会自动处理这条消息,决定什么方法执行什么操作的配置在RedisMessageListener中实现。

日志打印:

总结 网上绝大部分都是String类型的消息发布订阅,肯定无法满足现实需求,所以要自定义序列化方式并实现主题与对应的处理方法的配置,在这里需要注意两点,第一点是序列化类型的选择,第二是这里序列化的类需要有无参构造方法(给人的感觉类似MyBatis返回结果集时报构造函数不存在时添加无参构造函数就能解决一样)。

经验分享 程序员 微信小程序 职场和发展