Redis发布订阅模式

1、创建发送者

TEST_CHANNEL 为自定义通道,发送者将消息发送到通道中,接受者订阅了这个通道就可以获取到信息

typescript 复制代码
@Component
public class RedisSender {
	public static final String TEST_CHANNEL = "test_channel";

	@Autowired
	private RedisTemplate redisTemplate;

	public void send(String channel, String message) {
		redisTemplate.convertAndSend(channel, message);
	}
}

2、创建订阅者

现在接受到了消息只是简单的打印了出来

java 复制代码
@Component
public class RedisRecipient implements MessageListener {
	public static final String TEST_CHANNEL = "test_channel";

	@Override
	public void onMessage(Message message, byte[] pattern) {
		System.out.println("接受到的信息为:" + message.toString());
	}
}

3、配置消息监听

java 复制代码
@Configuration
public class RedisConfig {

	/**
	 * 配置消息监听
	 */
	@Bean
	public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, RedisRecipient redisRecipient) {
		RedisMessageListenerContainer container = new RedisMessageListenerContainer();
		container.setConnectionFactory(connectionFactory);

		// 订阅频道
		Topic topic = new PatternTopic(RedisRecipient.TEST_CHANNEL);

		// 使用监听器监听Redis的消息
		container.addMessageListener(redisRecipient, topic);
		return container;
	}
}

4、测试

kotlin 复制代码
@SpringBootTest
public class RedisTest {
	@Resource
	private RedisSender redisSender;

	@Test
	public void test02() {
		redisTemplate.opsForValue().set("cKey", "11");
		Object cKey = redisTemplate.opsForValue().get("cKey");
		System.out.println(cKey);

		redisSender.send(RedisSender.TEST_CHANNEL, "你好");
	}

}
相关推荐
薪火铺子9 分钟前
SpringMVC请求处理流程源码解析(第1篇):请求入口与处理器映射
java·后端·spring
_Evan_Yao26 分钟前
从 IP 路由到 Agent 路由:最长前缀匹配如何帮你分发任务?
java·网络·后端·网络协议·tcp/ip
贾红平29 分钟前
Redis缓存策略深度解析2026
redis
.柒宇.39 分钟前
AI掘金头条项目 Docker Compose 部署完整教程(附踩坑记录)
运维·后端·python·docker·容器·fastapi
yuweiade1 小时前
GO 快速升级Go版本
开发语言·redis·golang
Victor3562 小时前
MongoDB(118)如何在升级过程中进行数据备份?
后端
手握风云-2 小时前
Spring AI:让大模型住进 Spring 生态(三)
java·后端·spring
Victor3562 小时前
MongoDB(117)如何从旧版本迁移到新版本?
后端
pe7er5 小时前
window管理开发环境篇 - 持续更新
前端·后端
陈随易10 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员