SpringBoot基于Redis的发布订阅
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了SpringBoot基于Redis的发布订阅,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2681字,纯文字阅读大概需要4分钟。
内容图文
![SpringBoot基于Redis的发布订阅](/upload/InfoBanner/zyjiaocheng/858/66ddc2b4e6eb487383b74ef19b436b5a.jpg)
SpringBoot基于Redis的发布订阅
1.导入Redis依赖
<!-- SpringBoot整合Redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.修改Redis配置
# 配置redis
spring.redis.host=localhost
spring.redis.port=6379
3.自定义RedisTamplate
/*
* 自定义RedisTamplate
* */
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
// 将template 泛型设置为 <String, Object>
RedisTemplate<String, Object> template = new RedisTemplate();
// 连接工厂,不必修改
template.setConnectionFactory(redisConnectionFactory);
/*
* 序列化设置
*/
// key、hash的key 采用 String序列化方式
template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string());
// value、hash的value 采用 Jackson 序列化方式
template.setValueSerializer(RedisSerializer.json());
template.setHashValueSerializer(RedisSerializer.json());
template.afterPropertiesSet();
return template;
}
}
4.发布者
Publisher接口
/*
* 发布者
* */
public interface Publisher {
void sendMsg(String topic, String msg);
}
Mypublisher类
@Service
public class MyPublisher implements Publisher {
@Autowired
public RedisTemplate<String, Object> redisTemplate;
@Override
public void sendMsg(String topic, String msg) {
redisTemplate.convertAndSend(topic, msg);
}
}
5.订阅者
1)配置RedisMessageListenerContainer容器
/*
* 配置RedisMessageListenerContainer容器
* */
@Bean
RedisMessageListenerContainer redisContainer(RedisConnectionFactory factory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(factory);
return container;
}
2)定义消息监听器,需要实现MessageListener接口
@Component
public class MsgListener implements MessageListener {
@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("Message received: " + message.toString());
}
}
3)SubScriber订阅者类
@Service
public class SubScriber {
@Autowired
private RedisMessageListenerContainer container;
public void subScribe(String topic){
//订阅频道
container.addMessageListener(new MsgListener(), new ChannelTopic(topic));
}
}
6.测试Controller
@RestController
public class MsgController {
@Autowired
private MyPublisher publisher;
@Autowired
private SubScriber subScriber;
@RequestMapping("/sendMsg/{msg}")
public String sendMsg(@PathVariable("msg") String msg){
publisher.sendMsg("mjj", msg);
return "发布成功!";
}
@RequestMapping("/subChannel/{topic}")
public String subChannel(@PathVariable("topic") String topic){
subScriber.subScribe(topic);
return "订阅成功!";
}
}
localhost:8080/subChannel/mjj
http://localhost:8080/sendMsg/123456
控制台输出:
内容总结
以上是互联网集市为您收集整理的SpringBoot基于Redis的发布订阅全部内容,希望文章能够帮你解决SpringBoot基于Redis的发布订阅所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。