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

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. WPF 反射加载Geometry几何图形数据图标

    相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据 这种Geometry数据就是几何图形数据 为什么要用Geometry数据做图标? 有一种做法是使用ttf字体文件代替,不过使用 ...

  2. 第15 章 : 深入解析 Linux 容器

    深入解析 Linux 容器 今天的内容主要分成以下三个部分 资源隔离和限制: 容器镜像的构成: 容器引擎的构成: 前两个部分就是资源隔离和限制还有容器镜像的构成,第三部分会以一个业界比较成熟的容器引擎 ...

  3. Ubuntu所有版本下载及更新源

    官网:https://www.ubuntu.com/download/desktop没找到历史版本,且下载速度很慢在网易镜像站下载ubuntu:网址:http://mirrors.163.com/ub ...

  4. Spring学习笔记(五):JDBCTemplate+事务管理

    1 概述 Spring为开发者提供了JDBCTemplate,可以简化很多数据库操作相关的代码,本文主要介绍JDBCTemplate的使用以及事务管理功能. 2 JDBC Template 2.1 配 ...

  5. Nginx/Apache + acme.sh 实现https访问

    1 概述 acme.sh实现了acme协议,可以从Let's Encrypt生成免费的ssl证书用于实现https,本文介绍了常见的两种服务器Apache与Nginx上利用acme.sh配置https ...

  6. ambari介绍及安装

    Ambari简介 Ambari概述 Apache Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建.管理和监控.Ambari已支持大多数Hadoop组件,包括HDFS.Ma ...

  7. JPA之排序条件查询

    List<Monitoring> monitoringList = repository.findAll((root, query, cb) -> { List<Predica ...

  8. P2P技术(一):NAT

    1.NAT由来 NAT是一项神奇的技术,说它神奇在于它的出现几乎使IPv4起死回生.在IPv4已经被认为行将结束历史使命之后近20年时间里,人们几乎忘了IPv4的地址空间即将耗尽这样一个事实--在新技 ...

  9. 如何在linux上手动连接到互联网

    作者 @飞洲人飞舟魂转载请注明出处. 一直以来对linux的网络管理不大明白,今天研究了一下网络的手动配置,现在记录一下.我使用Ubuntu20.04.1来进行演示. 介绍 首先我们先明确一些概念性的 ...

  10. Laravel打印sql日志

    直接打印 use Log; use DB; DB::connection()->enableQueryLog(); Log::info(DB::getQueryLog()); //print_r ...