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

新疆建设职业技术学院招生信息网站seo工作流程

新疆建设职业技术学院招生信息网站,seo工作流程,网站建设脚本,什么网站ppt做的最好看😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

Spring Boot整合Redis 实现发布/订阅功能

  • 前言
  • Redis发布/订阅模式简介
    • ❶ 什么是发布/订阅?
    • ❷ Redis 发布/订阅的优点
    • ❸ Redis 发布/订阅的缺点
    • ❹ Redis发布订阅命令
  • 开始实操
    • 步骤一:添加依赖
    • 步骤二:配置Redis
    • 步骤三:创建redis配置类
    • 步骤四:创建消息接收 / 发布类
    • 步骤五:编写Controller测试
  • 测试与验证
  • 总结

前言

本文对应源码下载地址: https://download.csdn.net/download/lhmyy521125/89417819 无需积分

Redis作为一个高性能的内存数据存储,除了支持缓存和持久化数据,它还有很多功能,如:在博主分享的上一篇文章中,我们介绍了使用Redis实现的延迟队列功能 【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列】

今天我们来聊聊redis的另外一个功能特性:发布/订阅(Pub/Sub)

Redis发布/订阅模式简介

❶ 什么是发布/订阅?

发布/订阅是一种消息通信模式,其中发送者(发布者)发布消息,多个接收者(订阅者)订阅并接收这些消息。发布者和订阅者之间没有直接联系,消息由消息中间件(如 Redis)传递。
在这里插入图片描述

❷ Redis 发布/订阅的优点

  • 高性能:Redis 作为内存存储,具备极高的读写性能,能够快速处理发布和订阅消息
  • 简单易用:Redis 的发布/订阅接口简单,易于集成和使用
  • 实时性强:发布的消息会立即传递给所有订阅者,具备高实时性

❸ Redis 发布/订阅的缺点

  • 消息丢失:由于 Redis 是内存存储,如果 Redis 实例宕机,未处理的消息可能会丢失
  • 无法持久化:Redis 的发布/订阅模式不支持消息持久化,无法存储和检索历史消息
  • 订阅者不可控:发布者无法控制订阅者的数量和状态,无法保证所有订阅者都能接收到消息
  • 无确认机制:发布者无法确认消息是否被订阅者接收和处理

正如上述中Redis的缺点,Redis 的发布订阅功能并不可靠,如果我们需要保证消息的可靠性、包括确认、重试等要求,我们还是要选择MQ实现发布订阅

Redis的发布/订阅应用场景:

  • 对于消息处理可靠性要求不强
  • 消息无需持久化
  • 消费能力无需通过增加消费方进行增强
  • 架构简单 中小型系统不希望应用过多中间件

❹ Redis发布订阅命令

命令描述
Redis Unsubscribe 命令指退订给定的频道
Redis Subscribe 命令订阅给定的一个或多个频道的信息
Redis Pubsub 命令查看订阅与发布系统状态
Redis Punsubscribe 命令退订所有给定模式的频道
Redis Publish 命令将信息发送到指定的频道
Redis Psubscribe 命令订阅一个或多个符合给定模式的频道

开始实操

步骤一:添加依赖

首先,确保你已经安装并配置好了 Redis 服务器,并构建你的 Spring Boot 项目,在pom.xml中引入依赖

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

步骤二:配置Redis

在Spring Boot配置文件设置 Redis 的连接参数

spring:#redisredis:# 地址host: 127.0.0.1# 端口,默认为6379port: 6379# 数据库索引database: 0# 密码password:# 连接超时时间timeout: 10slettuce:pool:# 连接池中的最小空闲连接min-idle: 5# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 20# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms

步骤三:创建redis配置类

创建一个配置类,配置 Redis 连接工厂和消息监听器容器:

package com.example.demo.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;@Configuration
public class RedisConfig {@BeanRedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,MessageListenerAdapter listenerAdapter) {//设置连接工厂RedisConnectionFactoryRedisMessageListenerContainer container = new RedisMessageListenerContainer();container.setConnectionFactory(connectionFactory);// 订阅订阅名称 micro 的通道container.addMessageListener(listenerAdapter, new ChannelTopic("micro"));// 订阅名称 'test-' 开头的全部通道container.addMessageListener(listenerAdapter, new PatternTopic("test-*"));return container;}@Beanpublic MessageListenerAdapter listenerAdapter(MessageReceiver receiver) {return new MessageListenerAdapter(receiver);}
}

步骤四:创建消息接收 / 发布类

创建一个消息发布类,用于发布消息

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;@Component
public class MessagePublisher {private final StringRedisTemplate redisTemplate;public MessagePublisher(StringRedisTemplate redisTemplate) {this.redisTemplate = redisTemplate;}public void publish(String channel, String message) {redisTemplate.convertAndSend(channel, message);}
}

创建一个消息接收类,用于处理接收到的消息

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.stereotype.Component;@Component
@Slf4j
public class MessageReceiver implements MessageListener {@Overridepublic void onMessage(Message message, byte[] pattern) {//消息通道String channel = new String(message.getChannel());//消息内容String messageBody = new String(message.getBody());// 消息订阅的匹配规则,如 new PatternTopic("test-*") 中的 test-*String msgPattern = new String(pattern);log.info("接收消息: channel={} body={} pattern={} ", channel, messageBody, msgPattern);// 这里处理接收的消息}
}

步骤五:编写Controller测试

创建一个简单的控制器 PublisherController 来测试我们的订阅发布功能:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/api")
public class PublisherController {@Autowiredprivate MessagePublisher messagePublisher;@GetMapping("/publish")public String publish(@RequestParam String message) {messagePublisher.publish("micro", message);return "Message published: " + message;}
}

测试与验证

完成上述代码编写后,我们启动 Spring Boot ,使用调试工具进行测试
在这里插入图片描述
观察控制台输出
在这里插入图片描述
至此我们Spring Boot整合Redis实现发布/订阅功能的简单Demo已经完成

总结

通过本文,我们详细介绍了如何在 Spring Boot 中整合 Redis 实现发布/订阅功能,并提供了详细的代码示例。Redis 发布/订阅模式以其高性能和简单易用的特点,在实时消息传递场景中有着广泛的应用,但同时就如文中提到的小伙伴们也需要注意其消息丢失和无法持久化等缺点,需要根据实际业务需求选择。

本文的代码主要是演示使用,小伙伴们可以根据自己业务需求进行修改升级。如果本文对您有所帮助,希望 一键三连 给博主一点点鼓励,如果您有任何疑问或建议,请随时留言讨论

http://www.dtcms.com/wzjs/405101.html

相关文章:

  • java网站开发思维导图怎样在百度上做广告
  • 如何在对方网站上做外链深圳网站建设公司
  • 视频上到什么地方可以做网站链接中文网站排名
  • 多地优化调整疫情防控措施seo的方法
  • 公司网站如何更改内容企业seo如何优化
  • 网站推广页面 英语体验营销
  • 上海网站空间合肥做网站公司哪家好
  • 南昌网站建设公司价位适合小学生的最新新闻
  • 网站建设培训哪家好有创意的网络营销案例
  • lamp wordpress主题太原百度快速优化排名
  • 品牌推广部河南网站seo
  • 哈尔滨大型网站制作开发站长素材网站
  • ppt网站超链接怎么做企业seo顾问服务阿亮
  • 论坛门户网站开发企业自助建站
  • 如何承接设计网站建设英语seo什么意思
  • 数字广东网络建设有限公司电话杭州网络排名优化
  • 沈阳网站建设多少钱邵阳网站seo
  • 推荐几个没封的正能量网站产品市场营销策划方案
  • ubuntu中wordpressseo推广系统
  • 容桂营销网站建设建站公司最新报价
  • 网站邮箱接口怎么设置搜索推广公司
  • 网站的横幅怎么做吸引人的软文
  • wordpress虚拟3d网站sem代运营
  • 邢台移动网站建设报价比较正规的代运营
  • 常德做网站2022适合小学生的简短新闻
  • 网站建设中常用的技术有哪些seo超级外链发布
  • 网站建设课程设计论文百度网站推广申请
  • 网站建设与维护教学课件acca少女网课视频
  • 软件下载网站整站源码成年s8视频加密线路
  • 能用VUE做网站自己怎么做网站网页