Spring RedisTemplate操作-发布订阅操作(8)
- @Component("sub")
- public class Sub implements MessageListener{
- @Autowired
- private StringRedisSerializer stringRedisSerializer;
- /* (非 Javadoc)
- * Description:
- * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
- */
- @Override
- public void onMessage(Message message, byte[] pattern) {
- byte[] body = message.getBody();//请使用valueSerializer
- byte[] channel = message.getChannel();
- String msg = (String)stringRedisSerializer.deserialize(body);
- String topic = (String)stringRedisSerializer.deserialize(channel);
- System.out.println("我是sub,监听"+topic+",我收到消息:"+msg);
- }
- }
- @Component("sub2")
- public class Sub2 implements MessageListener{
- @Autowired
- private StringRedisSerializer stringRedisSerializer;
- @Autowired
- private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
- /* (非 Javadoc)
- * Description:
- * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
- */
- @Override
- public void onMessage(Message message, byte[] pattern) {
- byte[] body = message.getBody();//请使用valueSerializer
- byte[] channel = message.getChannel();
- String msg = (String)stringRedisSerializer.deserialize(body);
- String topic = (String)stringRedisSerializer.deserialize(channel);
- System.out.println("我是sub2,监听"+topic+",我收到消息:"+msg);
- }
- }
- @Component("sub3")
- public class Sub3 implements MessageListener{
- @Autowired
- private GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer;
- @Autowired
- private StringRedisSerializer stringRedisSerializer;
- @Autowired
- private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
- /* (非 Javadoc)
- * Description:
- * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
- */
- @Override
- public void onMessage(Message message, byte[] pattern) {
- byte[] body = message.getBody();//请使用valueSerializer
- byte[] channel = message.getChannel();
- User u = jackson2JsonRedisSerializer.deserialize(body,User.class);
- String topic = (String)stringRedisSerializer.deserialize(channel);
- System.out.println("我是sub3,监听"+topic+",我收到消息:"+u.getId()+"--"+u.getName());
- }
- }
- @Service
- public class Pub {
- @Autowired
- @Resource(name="redisTemplate")
- private RedisTemplate<String, String> rt;
- @Autowired
- private GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer;
- @Autowired
- private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
- public void sendMessage(String channel, String message) {
- rt.convertAndSend(channel, message);
- }
- public void sendMessage(String channel, User user) {
- byte[] msg =jackson2JsonRedisSerializer.serialize(user);
- rt.convertAndSend(channel, new String(msg));
- // rt.convertAndSend(channel, user);
- }
- }
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = "classpath:conf/spring/spring*.xml")
- public class PubSubTest {
- @Autowired
- private Pub pub;
- @Test
- public void test() throws InterruptedException{
- User u = new User();
- u.setId("1");
- u.setName("wzg");
- pub.sendMessage("dddchannel", "我发消息了");
- pub.sendMessage("cccchannel", u);
- Thread.sleep(100);//jackson 反向序列化慢
- }
- }
Spring RedisTemplate操作-发布订阅操作(8)的更多相关文章
- [Redis-CentOS7]Redis发布订阅操作(七)
发布订阅 发布:打电话 订阅:接电话 订阅频道 127.0.0.1:6379> SUBSCRIBE msg Reading messages... (press Ctrl-C to quit) ...
- 【spring boot】【redis】spring boot 集成redis的发布订阅机制
一.简单介绍 1.redis的发布订阅功能,很简单. 消息发布者和消息订阅者互相不认得,也不关心对方有谁. 消息发布者,将消息发送给频道(channel). 然后是由 频道(channel)将消息发送 ...
- RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用
本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...
- SpringBoot进阶教程(二十九)整合Redis 发布订阅
SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...
- redis(3)发布订阅
一.发布/订阅模式 在软件工程里面,发布/订阅是一种消息模式,这种模式旨在将消息发送者和消息接收者解耦.发送者不需要关心将消息发送给谁,接收者也不需要知道消息的发送者是谁.发送者将消息发布以后就结束动 ...
- sqlserver关于发布订阅replication_subscription的总结
(转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...
- Redis 发布订阅,小功能大用处,真没那么废材!
今天小黑哥来跟大家介绍一下 Redis 发布/订阅功能. 也许有的小伙伴对这个功能比较陌生,不太清楚这个功能是干什么的,没关系小黑哥先来举个例子. 假设我们有这么一个业务场景,在网站下单支付以后,需要 ...
- Spring RedisTemplate操作-xml配置(1)
网上没能找到全的spring redistemplate操作例子,故特意化了点时间做了接口调用练习,基本包含了所有redistemplate方法. 该操作例子是个系列,该片为spring xml配置, ...
- 第三百零一节,python操作redis缓存-管道、发布订阅
python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...
随机推荐
- kafka的简单理解
经典组合: Flume+Kafka+Storm+HDFS/HBase Flume:分布式采集 Kafka:分布式缓存 Kafka简介: 一种分布式的.基于发布/订阅的消息系统(Scala编写的) Ka ...
- Actual Time Cost
- 20135220谈愈敏Blog2_操作系统是如何工作的
操作系统是如何工作的 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计 ...
- team330团队铁大兼职网站使用说明
项目名称:铁大兼职网站 项目形式:网站 网站链接:http://39.106.30.16:8080/zhaopinweb/mainpage.jsp 开发团队:team330 网站上线时间:2018年1 ...
- python 如何写CMD命令工具
#-*- coding: UTF- -*- import argparse import sys: sys.argv.append('--help') parser = argparse.Argume ...
- BroadcastReceiver介绍
参考资料 : 基础总结篇之五:BroadcastReceiver应用详解 BroadcastReceiver用于接收广播信息,可以通过sendBroadcast等方法进行发送.sendBroadcas ...
- 关于“Scrum敏捷项目管理”
此次关于“Scrum”的名词解析,主要目的是为我们的“OneZero”团队确定项目开发的模式. http://www.cnblogs.com/taven/archive/2010/10/17/1853 ...
- angular学习总结
因为学习需要,要配置一系列环境,中间又出了很多各种各样的花式错误,因此当做个人总结记录一下.一.vs1. 完全卸载VS2013找到vs2013的安装包,如图 打开cmd命令行窗口,cd到安装包下的vs ...
- [代码]--GridControl使用技巧总结,更新中...
1如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 2如何定位到第一条数据/记 ...
- BZOJ2653 middle(二分答案+主席树)
与中位数有关的题二分答案是很常用的trick.二分答案之后,将所有大于它的看成1小于它的看成-1,那么只需要判断是否存在满足要求的一段和不小于0. 由于每个位置是1还是-1并不固定,似乎不是很好算.考 ...