欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Redis中使用Java代码的方式实现发布订阅流程

发布时间:2025/3/19 java 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Redis中使用Java代码的方式实现发布订阅流程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

场景

Redis中的发布与订阅的概念与以命令行的方式实现发布订阅举例:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105042049

在上面了解了Redis的发布与订阅的概念以及使用命令行的方式实现简单的发布与订阅流程后,

在Java中怎样实现发布与订阅。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

JedisPushSub类

Jedis中的JedisPubSub类是Jedis的一个抽象类,此类定义了public/subscribe的回调方法,通过继承JedisPubSub类

重写回调方法。实现java中Redis的发布订阅。当Redis发生发布或者订阅的相关事件时会调用这些回调方法,只在

回调方法中实现自己的业务逻辑。

onMessage():发布者发布消息时,会执行订阅者的回调方法onMessage()接收发布的消息,在此方法实现消息接收后进行

自定义的业务逻辑处理。

实现订阅者

打开IDEA新建Maven项目,然后添加jedis的依赖

    <dependencies><!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.0.1</version></dependency></dependencies>

然后在test新新建包,包下新建Java类RedisSubscriber

 

然后使其继承JedisPubSub并重写onMessage方法

在回调方法onMessage中实现简单的输出接受的消息和时间。

    @Overridepublic void onMessage(String channel, String message) {SimpleDateFormat df = new SimpleDateFormat("yyyy MM dd HH:mm:ss");System.out.println("订阅者:订阅频道["+channel+"],收到消息["+message+"],时间:"+df.format(new Date()));}

然后创建main方法,创建Jedis对象和订阅者并订阅频道。

    public static void main(String[] args) {System.out.println("启动订阅者");//创建JedisJedis jedis = new Jedis("192.168.40.133", 6379);//创建订阅者RedisSubscriber redisSubscriber = new RedisSubscriber();//订阅频道jedis.subscribe(redisSubscriber,"badaodechengxvyuan");}

完整示例代码

package com.badao.redis;import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPubSub;import java.text.SimpleDateFormat; import java.util.Date;public class RedisSubscriber extends JedisPubSub {@Overridepublic void onMessage(String channel, String message) {SimpleDateFormat df = new SimpleDateFormat("yyyy MM dd HH:mm:ss");System.out.println("订阅者:订阅频道["+channel+"],收到消息["+message+"],时间:"+df.format(new Date()));}public static void main(String[] args) {System.out.println("启动订阅者");//创建JedisJedis jedis = new Jedis("192.168.40.133", 6379);//创建订阅者RedisSubscriber redisSubscriber = new RedisSubscriber();//订阅频道jedis.subscribe(redisSubscriber,"badaodechengxvyuan");} }

然后运行main方法,启动该订阅者。

 

参照上面以命令行的方式实现发布和订阅的流程,在上面发布一个消息

我们就可以在此订阅者中接收到消息了。

 

实现发布者

再次新建一个Maven项目,然后引入jedis的依赖,同上新建包和类

在类中新建main方法,然后发布消息

package com.badao.redis;import redis.clients.jedis.Jedis;public class Publisher {public static void main(String[] args) {System.out.println("开始发布......");//创建JedisJedis jedis = new Jedis("192.168.40.133", 6379);//发布消息jedis.publish("badaodechengxvyuan", "紧急通知:...");System.out.println("消息发送完毕......");} }

然后运行main方法,就可以在前面的订阅者的项目中收到消息了

 

总结

以上是生活随笔为你收集整理的Redis中使用Java代码的方式实现发布订阅流程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。