当前位置: 首页 > news >正文

SpringBoot+Redis 发布与订阅

 两个应用都引入

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

发布者

/*** @author hrui* @date 2024/8/5 23:32*/
@RestController
public class PublisherController {@Autowiredprivate RedisMessagePublisher redisMessagePublisher;// 发布消息接口@GetMapping("/publish")public String publishMessage() {String message = "发布一条消息";redisMessagePublisher.publish(message);return "消息已发布!";}
}
/*** @author hrui* @date 2024/8/5 23:31*/
@Service
public class RedisMessagePublisher {@Autowiredprivate RedisTemplate redisTemplate;// 发布消息到指定的通道public void publish(String message) {redisTemplate.convertAndSend("my-topic", message);System.out.println("发布消息: " + message + " 到通道: my-topic");}
}
spring.application.name=fabuserver.port=8999spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379

订阅者

@Configuration
public class RedisConfig {// 配置Redis消息监听容器@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {RedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);// 订阅固定的通道 "my-topic"container.addMessageListener(listenerAdapter, new ChannelTopic("my-topic"));return container;}// 配置消息监听适配器,不需要指定方法名,默认调用handleMessage@BeanMessageListenerAdapter listenerAdapter(RedisMessageSubscriber subscriber) {//指定方法名接收消息return new MessageListenerAdapter(subscriber, "onMessage");//return new MessageListenerAdapter(subscriber);//使用默认方法handleMessage}
}

@Service
public class RedisMessageSubscriber {// 使用默认方法名 handleMessage 处理消息
//    public void handleMessage(String message, String channel) {
//        System.out.println("接收到消息: " + message + " 来自通道: " + channel);
//    }public void onMessage(String message, String channel) {System.out.println("接收到消息: " + message + " 来自通道: " + channel);}
}
spring.application.name=dingyueserver.port=9000spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379

这里只是简单介绍  处理方式有多种

  • 实现 MessageListener 接口:适合希望直接控制消息处理的类,并且需要实现 onMessage 方法。
  • 使用 MessageListenerAdapter:适合将消息处理方法绑定到已有的类和方法上,不需要实现 MessageListener 接口。
http://www.lryc.cn/news/416022.html

相关文章:

  • huggingface无法访问怎么办?一招教你解决,使用hf-mirror.com镜像站快速下载各种大模型
  • 如何用密码保护你的 WordPress 管理员 (wp-admin) 目录
  • java 程序包org.junit.jupiter.api不存在
  • 简单的docker学习 第4章 docker容器
  • 零基础入门转录组数据分析——机器学习算法之SVM-RFE(筛选特征基因)
  • Python酷库之旅-第三方库Pandas(067)
  • Spring快速学习
  • 【Web开发手礼】探索Web开发的秘密(十五)-Vue2(2)AJAX、前后端分离、前端工程化
  • Phalco安装过程以及踩的一些坑(mac环境)
  • Ubuntu修改双系统默认启动顺序
  • 高仲富:49岁搞AI,白天种菜卖菜,晚上学数学搞程序
  • 光线追踪(纹理映射)
  • 传统产品经理VS现在AI产品经理,你要学习的太多了,超详细收藏我这一篇就够了
  • C#使用Socket实现TCP服务器端
  • MTK联发科MT8766/MT8166安卓核心板性能参数对
  • ps绘制动图
  • AI学习指南机器学习篇-强化学习和深度学习简介
  • yolov8 bytetrack onnx模型推理
  • ImageNet数据集和CIFAR-10数据集
  • Go语言编程大全,web微服务数据库十大专题精讲
  • 【LabVIEW学习篇 - 13】:队列
  • 大语言模型综述泛读之Large Language Models: A Survey
  • 奇偶函数的性质及运算
  • 代码随想录 day 32 动态规划
  • 支持目标检测的框架有哪些
  • 原神自定义倒计时
  • top命令实时监测Linux进程
  • Rust 所有权
  • Python面试题:结合Python技术,如何使用PyTorch进行动态计算图构建
  • 基于RHEL7的服务器批量安装