场景

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代码的方式实现发布订阅流程相关推荐

  1. eclipse中java都乱码怎么办_eclipse中的java代码出现乱码怎么办

    eclipse中的java代码出现乱码怎么办 发布时间:2020-06-29 18:11:20 来源:亿速云 阅读:109 作者:Leah eclipse中的java代码出现乱码怎么办?相信很多没有经 ...

  2. JSP中嵌入java代码方式以及指令

    JSP中嵌入java代码的三种方式: (1)声明变量或方法 :  <%! 声明; %> :慎重使用,因为此方法定义的是全局变量 (2)java片段(scriptlet):  <% j ...

  3. matlab中调用java代码_Matlab中调用第三方Java代码

    在Java中采用Matlab JA Builder可以实现调用m文件,采用这样的方式,可在Matlab的M文件中,直接调用Java类.这种方式可以表示为Java--> Matlab( m, Ja ...

  4. 如何避免JSP文件中的Java代码?

    本文翻译自:How to avoid Java code in JSP files? I'm new to Java EE and I know that something like the fol ...

  5. ant脚本编译java_1.4 在Ant中编译Java代码

    1.4  在Ant中编译Java代码 在Java开发中,任何构建脚本都需要完成的一个最基本工作就是编译代码.在Ant中,任务为编译Java代码提供了方便的一次性解决方案. 下面介绍任务的简单用法.以上 ...

  6. MyEclipse中阿里JAVA代码规范插件(P3C)的安装及使用

    JAVA代码规范插件(P3C)是阿里巴巴2017年10月14日在杭州云栖大会上首发的,使之前的阿里巴巴JAVA开发手册正式以插件形式公开走向业界.插件的相关信息及安装包都可以在GitHub(https ...

  7. jsp页面中嵌入java代码

    1.jsp页面中嵌入java代码 jsp的脚本元素 jsp的指令元素 jsp的动作元素 1.1 jsp的脚本元素(直接嵌入java代码) 第一种:表达式(expression)形式:<%= %& ...

  8. java代码如何与界面联系在一起_如何在Visual Studio Code 中编写Java代码

    本文将展示如何在Visual Studio Code中用Java编写和运行一个简单的Hello World程序. 首先您必须在本地开发环境中安装Java SE开发工具包(JDK) Visual Stu ...

  9. android中在java代码中设置Button按钮的背景颜色

    android中在java代码中设置Button按钮的背景颜色 1.设置背景图片,图片来源于drawable: flightInfoPanel.setBackgroundDrawable(getRes ...

最新文章

  1. IT员工应该向谁汇报工作,CFO or CEO?
  2. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
  3. boost::locale::utf8_codecvt用法的测试程序
  4. python深度神经网络量化_「深度神经网络」(deep neural network)具体是怎样工作的?...
  5. python echarts接口_Python之图表Pyecharts
  6. 【POJ 1860】Currency Exchange
  7. Myeclipse破解后报错解决
  8. 0基础入门VTD—前言
  9. Java编程语言是什么
  10. 手机电子词典_如何把手机变成一款英语学习神器?
  11. 【NVIDIA】Win10 + CUDA10 + cuDNN 安装教程(转载)
  12. Mac如何用鼠标快速锁屏
  13. 乒乓球比赛赛程_2020年乒乓球比赛赛事赛程表(优个网独家整理)
  14. 单窗口单ip技术是什么
  15. 科目二:倒车入库考试技巧详细图解
  16. 中创生日会 | 烟火向星辰,所愿皆成真
  17. 使用阿里云服务器发送邮件
  18. R及R Studio下载及简单介绍(界面+R语言)
  19. Illustrator CC 2019 Essential Training Illustrator CC 2019基础教程 Lynda课程中文字幕
  20. 使用python高效办公Excel(直接模板套用)

热门文章

  1. python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例
  2. Java设计模式——为什么要用枚举实现单例模式(避免反射、序列化问题)
  3. python服务端开发调试日志系统_Python:如何进行延迟调试日志记录
  4. 注册oracle驱动,注册设备 ID - 编写适用于 Oracle® Solaris 11.2 的设备驱动程序
  5. 分类型变量预测连续型变量_终于弄清楚java的变量与类型了!
  6. 中呜机器人编程视频教程_清华北大泄露Python436集视频教程,这就是你现在需要的...
  7. gitblit如何迁移入gitlab合并迁移_github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器...
  8. 用devc++表白_教你用C语言加图形库打造炫酷表白连连看
  9. 宁波理工大学计算机程序设计培训,拼搏在程序设计前列——专访ACM大赛冠军浙江大学宁波理工学院FBH团队...
  10. webpack 多页面 html,webpack打包多页应用,如何处理不同html页面(通过a标签)之间的跳转?...