博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】redis 消息队列发布订阅模式spring boot实现
阅读量:6254 次
发布时间:2019-06-22

本文共 1673 字,大约阅读时间需要 5 分钟。

 最近做项目的时候写到一个事件推送的场景。之前的实现方式是起job一直查询数据库,看看有没有最新的消息。这种方式非常的不优雅,反正我是不能忍,由于羡慕本身就依赖redis,刚好redis 也有消息队列的功能,就简单的使用redis 来实现这个消息推送。

之前参考网上的例子,发现全部来自一个地方,spring 官方的一个例子,某些打着“非官方例子”的头号,还是一样就复制了一下官方的例子,怕是自己都没搞懂代码,原封不动的贴上来了,这边顺便提一句国内多数的博客都是相互“借鉴”,有些自己都没理解就把别人的内容 ctrl c  ctrl v 过来了。这边我不贴官方的代码, 官方的例子。顺便提一句。CountDownLatch 对象其实跟这个内容是无关的,这点我要提一下,具体功能我不多说,官方例子 是为了让程序发送到 redis 通道里面的 消息被程序读取之后 才结束程序 而引入的类。

       不多说 直接上代码

 

 

 
/**redis 消息处理器*/
@Component
public class MessageReceiver {
 
/**接收消息的方法*/
public void receiveMessage(String message){
System.out.println(message);
}
 
}
 
 
@Configuration
public class RedisConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
 
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//订阅了一个叫chat 的通道
container.addMessageListener(listenerAdapter, new PatternTopic("chat"));
//这个container 可以添加多个 messageListener
return container;
}
 
@Bean
MessageListenerAdapter listenerAdapter(MessageReceiver receiver) {
//这个地方 是给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage”
//也有好几个重载方法,这边默认调用处理器的方法 叫handleMessage 可以自己到源码里面看
return new MessageListenerAdapter(receiver, "receiveMessage");
}
 
/**redis 读取内容的template 这边跟本工程无关,可以不配置*/
@Bean
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
}
}
redisConfig.java

 

 

上面 我把两个类写在了一起,第一个类 messageReceiver 注释上也有说明,里面只有一个方法,就是接收到消息之后 处理,这边演示我就简单的将他打印在控制台上。

第二个类就是一些配置,注释上我想也应该能看明白。

ok 接下里就是启动程序 看看效果

 

    ok 我用命令 publish 向 chat 通道推送了 helloword (提一下 integer 1 代表的就是 当前订阅的用户)

 

    完美在我程序里面也收到这个消息,并且打印在控制台上。

 

你可能感兴趣的文章
An easy to use android color picker library
查看>>
win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
查看>>
Oracle SID爆破工具SidGuess
查看>>
用JAVA生成老电影海报
查看>>
c2java select algorithm
查看>>
闪聊的beta版推出了
查看>>
批处理常用命令总结2
查看>>
解读ASP.NET 5 & MVC6系列(9):日志框架
查看>>
php对uploads文件的处理问题的解决
查看>>
Eclipse 编译java文件后出错 左树无红叉
查看>>
MyEclipse生成WAR包并在Tomcat下部署发布(转发)
查看>>
Android -- 自定义View小Demo,绘制钟表时间(一)
查看>>
Chapter 24. Dynamic language support
查看>>
信息检索Reading List
查看>>
批量修改sharepoint 2013站点里区域设置
查看>>
Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
查看>>
JavaWeb_JavaEE_命名规则
查看>>
OPPO 立足国内放眼世界 寻求新的增长引擎
查看>>
申小雨命案审理延期至3月5日 警方将翻译嫌犯口供
查看>>
redis按下ctrl + c进程就没了
查看>>