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, "你好");
	}

}
相关推荐
开心猴爷16 分钟前
混合开发的 App 怎么测试?
后端
俞凡24 分钟前
eBPF + OpenTelemetry:适用于任何应用的零代码自动化测量
后端
Cache技术分享28 分钟前
275. Java Stream API - flatMap 操作:展开一对多的关系,拉平你的流!
前端·后端
sino爱学习42 分钟前
别再踩 Stream 的坑了!Java 函数式编程安全指南
java·后端
学习CS的小白1 小时前
跨域问题详解
vue.js·后端
小菜鸡ps1 小时前
纯个人大白话--flowable多实例加签与减签
后端·工作流引擎
+VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue作业管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
王中阳Go1 小时前
告别调包侠!2026年Go/Java程序员的AI架构师实战转型指南
后端·go
⑩-1 小时前
SpringCloud-Feign&RestTemplate
后端·spring·spring cloud
我是谁的程序员1 小时前
抓包工具有哪些?代理抓包、数据流抓包、拦截转发工具
后端