愿历尽千帆,归来仍是少年

1.所需依赖

        <!-- Redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> <!--常用工具类 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>

2.配置application.yml文件

# redis配置
redis:
# Redis数据库索引(默认0) 此处db1
database: 1
# redis服务器地址
host: xxx
# Redis服务器连接端口
port: 111
# Redis服务器连接密码(默认为空
password: xxx
# Lettuce 是一个可伸缩线程安全的 Redis 客户端,多个线程可以共享同一个 RedisConnection,它利用优秀 netty NIO 框架来高效地管理多个连接
lettuce:
pool:
# 连接池中的最大空闲连接
max-idle: 80
min-idle: 10
jedis:
pool:
# 连接池最大连接数
max-active: 300
# 连接池中的最大空闲连接
max-idle: 100
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# 连接池中的最小空闲连接
min-idle: 0
timeout: 5000ms

3.消息订阅者配置类

/**
* 消息订阅者配置类
*
* @author hxx
* @version 1.0
* @date 2021/5/19 14:34
*/
/*@Configuration用于定义配置类,可替换xml配置文件*/
@Configuration
public class RedisSubscriberConfig { /**
* 创建消息监听容器
*
* @param redisConnectionFactory
* @param reciver1ListenerAdapter
* @param reciver2ListenerAdapter
* @return
*/
@Bean
public RedisMessageListenerContainer getRedisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory,
MessageListenerAdapter reciver1ListenerAdapter, MessageListenerAdapter reciver2ListenerAdapter) {
RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();
redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);
//接受消息的key
redisMessageListenerContainer.addMessageListener(reciver1ListenerAdapter, new PatternTopic("reciver1"));
redisMessageListenerContainer.addMessageListener(reciver2ListenerAdapter, new PatternTopic("reciver2"));
return redisMessageListenerContainer;
} /**
* 消息监听适配器,注入接受消息方法,输入方法名字 反射方法
*
* @param receiver1
* @return
*/
@Bean
public MessageListenerAdapter reciver1ListenerAdapter(Receiver1 receiver1) {
return new MessageListenerAdapter(receiver1, "receiveMessage"); //当没有继承MessageListener时需要写方法名字
} /**
* 消息监听适配器,注入接受消息方法,输入方法名字 反射方法
*
* @param receiver2
* @return
*/
@Bean
public MessageListenerAdapter reciver2ListenerAdapter(Receiver2 receiver2) {
return new MessageListenerAdapter(receiver2, "receiveMessage"); //当没有继承MessageListener时需要写方法名字
} }

4.消费者

/**
* 消费者
*
* @author hxx
* @version 1.0
* @date 2021/5/19 15:01
*/
/*@controller 控制器(注入服务)控制层*/
@Component
public class Receiver1 { private static Logger logger = LogManager.getLogger(Receiver1.class); public void receiveMessage(String message) {
logger.info("收到的mq消息" + message);
} }

5.发送者

    @ApiOperation(value = "测试redis", notes = "测试redis")
@GetMapping(value = "/redis")
public String pubXgame(){
redisTemplate.convertAndSend("reciver1","111111");
logger.info("Publisher sendes reciver1... ");
return "success";
}

从零搭建springboot服务03-redis消息订阅的更多相关文章

  1. 从零搭建springboot服务01-初始搭建、内嵌swagger

    愿历尽千帆,归来仍是少年 1.基础springBoot框架 编辑工具:IDEA.jdk1.8.tomcat8.maven3.3.9 编码格式:UTF-8 参考文献:https://www.cnblog ...

  2. 从零搭建springboot服务02-内嵌持久层框架Mybatis

    愿历尽千帆,归来仍是少年 内嵌持久层框架Mybatis 1.所需依赖 <!-- Mysql驱动包 --> <dependency> <groupId>mysql&l ...

  3. python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面

    本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确.本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确. 实现细节:使用django项目,后 ...

  4. Redis之Redis消息订阅发布简介

    概念: Redis消息订阅发布是进程间的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息. 使用须知: 需要先订阅后发布,才能接收到消息.在订阅时,相当于创建了可供发布的频道. 案例: ( ...

  5. 二十四 Redis消息订阅&事务&持久化

    Redis数据类型: Redis控制5种数据类型:String,list,hash,set,sorted-set 添加数据,删除数据,获取数据,查看有多少个元素,判断元素是否存在 key通用操作 JR ...

  6. dubbo入门教程-从零搭建dubbo服务

    [原创 转载请注明出处] 本文是学习了dubbo之后自己手动写的,比较通俗,很多都是自己学习之后的理解,写的过程中没有参考任何文章. 另外dubbo也有官方文档,但是比较官方,也可以多看看dubbo的 ...

  7. Redis教程03——Redis 发布/订阅(Pub/Sub)

    Pub/Sub 订阅,取消订阅和发布实现了发布/订阅消息范式(引自wikipedia),发送者(发布者)不是计划发送消息给特定的接收者(订阅者).而是发布的消息分到不同的频道,不需要知道什么样的订阅者 ...

  8. Redis消息订阅与发布

    监听器的创建 package com.sogou.baike.testimport.testSubscribe; import redis.clients.jedis.JedisPubSub; pub ...

  9. Go游戏服务端框架从零搭建(一)— 架构设计

    五邑隐侠,本名关健昌,10年游戏生涯,现隐居海边. 本教程以Go语言分区游戏服务端框架搭建为例. Go语言是Google开发的一种静态强类型.编译型.并发型.具有垃圾回收功能的编程语言.语法上近似C语 ...

随机推荐

  1. Android Studio 有关 RecycleView 的使用

    •导入相关包 右击File->Project Structure: 搜索  com.android.support: 找到 recyclerview: 导入好后 Sync Now 同步一下,到这 ...

  2. 加快Python运行速度

    01 使用哈希表的数据结构 如果在程序中遇到大量搜索操作时,并且数据中没有重复项,则可以使用查找而不是循环.举例如下: items = ['a', 'b',..,'100m'] #1000s of i ...

  3. 你要 if 还是 case 呢?-- Shell十三问<第十二问>

    你要 if 还是 case 呢?-- Shell十三问<第十二问> 还记得我们在第 10 章所介绍的 return value 吗? 是的,接下来介绍的内容与之有关,若你的记忆也被假期的欢 ...

  4. 设计原则:单一职责(SRP)原则

    1 什么是单一职责(SRP)原则 单一职责原则的英文是 Single Responsibility Principle,缩写为 SRP.翻译过来就是:一个类或者模块只负责完成一个职责(或者功能). 所 ...

  5. 它来了,它来了,HarmonyOS应用开发在线体验来了

    接下来是我们的两分钟科普,一分钟玩转HarmonyOS应用开发在线体验,一分钟简单了解"一次开发.多设备部署"的原理.萌新的开发者也能第一时间掌握,往下看吧~ 一分钟玩转Harmo ...

  6. 消息中间件-RabbitMQ持久化机制、内存磁盘控制

    RabbitMQ持久化机制 RabbitMQ内存控制 RabbitMQ磁盘控制 RabbitMQ持久化机制 重启之后没有持久化的消息会丢失 package com.study.rabbitmq.a13 ...

  7. JDK8之后,在java语言这条路怎么走?

    前言 自2017年9月以来,Oracle按照免费的开源许可证(类似于Linux的许可证)提供JDK版本 .从Java SE 11(2018年9月,LTS)开始,Oracle不仅为开源许可下的所有用户免 ...

  8. 关于Vim/Neovim/SpaceVim的一些思考

    1 前言 最近看到了Neovim以及SpaceVim,于是上手试了一下. 2 Neovim与SpaceVim Neovim是Vim的一个分支,具有更加现代的GUI.嵌入式以及脚本化的终端.异步工作控制 ...

  9. linux 在某个路径下,查找某个文件

    find /cephfs/netdisk/ -name "*.sql"

  10. 网络编程Netty入门:责任链模式介绍

    目录 责任链模式 责任链模式的简单实现 Netty中的ChannelPipeline责任链 服务端接收客户端连接 pipeline初始化 入站事件和出站事件 Pipeline中的Handler Pip ...