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

}
相关推荐
彭于晏Yan13 分钟前
Redisson分布式锁
spring boot·redis·分布式
GetcharZp33 分钟前
Git 命令行太痛苦?这款 75k Star 的神级工具,让你告别“合并冲突”恐惧症!
后端
Victor3561 小时前
MongoDB(69)如何进行增量备份?
后端
Victor3561 小时前
MongoDB(70)如何使用副本集进行备份?
后端
千寻girling2 小时前
面试官 : “ 说一下 Python 中的常用的 字符串和数组 的 方法有哪些 ? ”
人工智能·后端·python
ywf12153 小时前
Spring Boot接收参数的19种方式
java·spring boot·后端
LSTM973 小时前
C# 实战:轻松提取 PDF 文件中的文字内容
后端
PFinal社区_南丞3 小时前
Skills与脚本:当智能遇上死板,一场编程界的"冰与火之歌"
后端
树上有只程序猿3 小时前
低代码何时能出个“秦始皇”一统天下?我是真学不动啦!
前端·后端·低代码
2501_921649493 小时前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链