springboot整合redis的发布订阅模式

所谓发布订阅模式,就是发布了消息丢到通道中,消费者进行消费

看代码:

1 首先需要配置这个连接工厂 ,这地方可能有人有疑问,为什么需要单独做一个类呢,是由与这个连接工厂其他地方需要用到,所以以bean的方式注入

@Configuration
public class Redisconfig {
    @Value("${redis.database}")
    private int database;
    @Value("${redis.host}")
    private String hostName;
    @Value("${redis.port}")
    private int port;
    @Value("${redis.password}")
    private String password;

    @Bean(name = "redisConnectionFactory")
    protected RedisConnectionFactory jedisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName(hostName);
        redisStandaloneConfiguration.setPort(port);
        redisStandaloneConfiguration.setDatabase(database);
        redisStandaloneConfiguration.setPassword(RedisPassword.of(password));
        JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
        jedisClientConfiguration.connectTimeout(Duration.ofSeconds(60));// 60s
        return new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration.build());
    }
}

2 配置2

/**
 * @program: operation->RedisTemplateConfig
 * @description:
 * @author: cxy
 * @create: 2019-12-26 17:55
 **/
@Configuration
public class RedisTemplateConfig {
    @Autowired
    RedisConnectionFactory redisConnectionFactory;
    @Bean
    public StringRedisTemplate redisTemplate() {
        StringRedisTemplate temple = new StringRedisTemplate();
        temple.setConnectionFactory(redisConnectionFactory);
        return temple;
    }
    @Bean
    RedisMessageListenerContainer container(
                                            MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(redisConnectionFactory);        //此处那个通道"cxy"  是监听者配置的通道,要与发送者相同
        container.addMessageListener(listenerAdapter, new PatternTopic("cxy"));
        return container;
    }
    //利用反射来创建监听到消息之后的执行方法   ,RedisReceiver 是接受者的类,receiveMessage接受者的方法
@Bean MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) {     return new MessageListenerAdapter(redisReceiver, "receiveMessage"); } }

3RedisReceiver接受类

@Service
public class RedisReceiver {

    public void receiveMessage(String message) {
        //这里是收到通道的消息之后执行的方法
        System.out.println("message:"+message);
    }
}

4 发送的方法:

@RequestMapping(value = "/q", method = RequestMethod.POST)
    public Result q() {
     redisTemplate.convertAndSend("cxy","我是中国人");
        return Result.success();
    }

5 主redis的配置:

redis:
  host:
  password:
  poolMaxIdle: 500
  poolMaxTotal: 1000
  poolMaxWait: 500
  port: 6379
  timeout: 10
  database: 0

6 调用结果:

springboot整合redis的发布订阅模式

可以看到接受到了

Original: https://www.cnblogs.com/xiufengchen/p/12341964.html
Author: 菩提树下的丁春秋
Title: springboot整合redis的发布订阅模式

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/529340/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux的NIS配置

    快速命令 Server和Client设置NIS域名 nisdomainname nis_server echo ‘NISDOMAIN=nis_server’ >> /e…

    Linux 2023年6月6日
    0118
  • postgresql 自增列 初始值设置

    — 获取自增列的名称 SELECT pg_get_serial_sequence(‘table_name’, ‘id’) AS sequence_name; –获取自增列的下一…

    Linux 2023年6月14日
    080
  • Linux基线加固

    bash;gutter:true; 1、修改vsftp回显信息 (1)检查办法 修改vsftp回显信息: 需在安装VSFTP的情况下检查,未安装可忽略或禁用该项。 查看ftpd_b…

    Linux 2023年6月13日
    088
  • node-java的使用及源码分析

    上篇文章简单提了下node调用java的方法但也只属于基本提了下怎么输出helloworld的层度,这次将提供一些案例和源码分析让我们更好地了解如何使用node-java库。 前置…

    Linux 2023年6月14日
    0103
  • 小团队如何妙用 JuiceFS

    早些年还在 ENJOY 的时候, 就已经在用 JuiceFS, 并且一路伴随着我工作过的四家小公司, 这玩意对我来说, 已经成了理所应当不可或缺的基础设施, 对于我服务过的小团队而…

    Linux 2023年6月14日
    0112
  • 高速USB转4串口产品设计-RS485串口

    基于480Mbps 高速USB转8路串口芯片CH344Q,可以为各类主机扩展出4个独立的串口。CH344芯片支持使用操作系统内置的CDC串口驱动,也支持使用厂商提供的VCP串口驱动…

    Linux 2023年6月7日
    0108
  • bochs(2.6.11)配置安装

    下载:https://bochs.sourceforge.io/ 建议下载2.6.11,下文一开始安装的2.7,但运行时有无法解决的错误。但是大致安装过程一致。 linux 提前安…

    Linux 2023年5月27日
    0137
  • Sublime快捷键大全

    Ctrl+Shift+P:打开命令面板Ctrl+P:搜索项目中的文件Ctrl+G:跳转到第几行Ctrl+W:关闭当前打开文件Ctrl+Shift+W:关闭所有打开文件Ctrl+Sh…

    Linux 2023年6月13日
    078
  • go将青龙面板里面的脚本文件都下载到本地

    纯粹练手用的,大家轻喷青龙面板的脚本文件可以下载到本地,这样的话自己可以研究一下对应的脚本文件,能学到更多的知识,原理其实很简单,F12一下就知道了,青龙面板使用Request H…

    Linux 2023年6月7日
    0140
  • sed高阶用法

    a 追加 [root@localhost ~]# cat test hello world jjjd aaaaaaa //向第二行后面追加’hi world’ [root@loca…

    Linux 2023年6月13日
    099
  • Spring中如何使用自定义注解搭配@Import引入内外部配置并完成某一功能的启用

    有些网站第一时间爬取了我的原创文章,并且没有注明出处,不得已在这里加上说明。 文章背景 有一个封装 RocketMq 的 client 的需求,用来提供给各项目收、发消息,但是项目…

    Linux 2023年6月6日
    0117
  • Linux内核中内存管理相关的数据结构

    本文简要说明几个内核和内存管理有关的结构体。其中 struct page 和 struct zone有较大幅度的删减,主要删减了和NUMA模型SPARSE模型以及内存热插拔相关的域…

    Linux 2023年6月7日
    0110
  • 安卓投屏助手(ARDC)最新版

    近几年安卓多屏协同非常火爆,以华为小米为首的各大手机厂商都推出了各自的多屏协同软件,打破手机、平板和VR等安卓设备与电脑的边界,通过多屏融合提高办公的生产力。国内安卓投屏软件有To…

    Linux 2023年6月7日
    0322
  • 关于面试的那些事

    这周做了三次的笔试,周日的XXX,周三的XXX,周五的XXX。 首先周日的XXX,考了四道算法题,两个小时,说实话题目都没怎么读懂,算法基本没接触过,结果一道也没有做出来,只想说,…

    Linux 2023年6月7日
    0120
  • 一文搞懂 Redis 架构演化之路

    作者:ryetan,腾讯 CSIG 后台开发工程师 现如今 Redis 变得越来越流行,几乎在很多项目中都要被用到,不知道你在使用 Redis 时,有没有思考过,Redis 到底是…

    Linux 2023年5月28日
    0103
  • 一、Java分布式(第一章)

    单机架构:将一个项目所有的业务部署在一个服务器上,整个项目的所有服务都由这台服务器提供。单机架构的劣势已经体现出来了,当访问量越来越大,单机架构肯定撑不住。例如双十一的活动,单机架…

    Linux 2023年6月7日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球