@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)的更多相关文章

  1. [Redis-CentOS7]Redis发布订阅操作(七)

    发布订阅 发布:打电话 订阅:接电话 订阅频道 127.0.0.1:6379> SUBSCRIBE msg Reading messages... (press Ctrl-C to quit) ...

  2. 【spring boot】【redis】spring boot 集成redis的发布订阅机制

    一.简单介绍 1.redis的发布订阅功能,很简单. 消息发布者和消息订阅者互相不认得,也不关心对方有谁. 消息发布者,将消息发送给频道(channel). 然后是由 频道(channel)将消息发送 ...

  3. RedisRepository封装—Redis发布订阅以及StackExchange.Redis中的使用

    本文版权归博客园和作者本人吴双共同所有,转载请注明本Redis系列分享地址.http://www.cnblogs.com/tdws/tag/NoSql/ Redis Pub/Sub模式 基本介绍 Re ...

  4. SpringBoot进阶教程(二十九)整合Redis 发布订阅

    SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...

  5. redis(3)发布订阅

    一.发布/订阅模式 在软件工程里面,发布/订阅是一种消息模式,这种模式旨在将消息发送者和消息接收者解耦.发送者不需要关心将消息发送给谁,接收者也不需要知道消息的发送者是谁.发送者将消息发布以后就结束动 ...

  6. sqlserver关于发布订阅replication_subscription的总结

    (转载)sqlserver关于发布订阅replication_subscription的总结 来自 “ ITPUB博客 ” ,原文地址:http://blog.itpub.net/30126024/v ...

  7. Redis 发布订阅,小功能大用处,真没那么废材!

    今天小黑哥来跟大家介绍一下 Redis 发布/订阅功能. 也许有的小伙伴对这个功能比较陌生,不太清楚这个功能是干什么的,没关系小黑哥先来举个例子. 假设我们有这么一个业务场景,在网站下单支付以后,需要 ...

  8. Spring RedisTemplate操作-xml配置(1)

    网上没能找到全的spring redistemplate操作例子,故特意化了点时间做了接口调用练习,基本包含了所有redistemplate方法. 该操作例子是个系列,该片为spring xml配置, ...

  9. 第三百零一节,python操作redis缓存-管道、发布订阅

    python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...

随机推荐

  1. 【Direct2D1.1初探】Direct2D特效概览

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct2D是一个基于Direct3D的2D图形API,可以利用硬件加速特性来提供高性能高质量的2D渲染.但 ...

  2. Flume的简单理解

    由于没具体研究过画图,以前在公司每天都用Excel,所以很多图画都是画在了Excel上再剪切的,看着可能不太舒服. 先来看一下数据走向: 这样我们就大致了解了flume是干嘛的,在什么位置了. Flu ...

  3. 学习笔记 | CDQ分治

    目录 前言 啥是CDQ啊(它的基本思想) 例题 后记 参考博文 前言 博主太菜了 学习快一年的OI了 好像没有什么会的算法 更寒碜的是 学一样还不精一样TAT 如有什么错误请各位路过的大佬指出啊感谢! ...

  4. babel的使用(关于使用async报错的问题)

    一.配置文件.babelrc .babelrc 文件存放在项目的根目录下. { "presets": [], "plugins": [] } presets 字 ...

  5. springmvc 事务回滚说明

    Spring中的@Transactional(rollbackFor = Exception.class)属性详解 序言 今天我在写代码的时候,看到了.一个注解@Transactional(rollb ...

  6. mysql 查询所有子节点的相关数据

    定义一个函数 ) CHARSET utf8 BEGIN ); ); SET sTemp = '$'; SET sTempChd =cast(rootId as CHAR); WHILE sTempCh ...

  7. LeetCode 637. Average of Levels in Binary Tree二叉树的层平均值 (C++)

    题目: Given a non-empty binary tree, return the average value of the nodes on each level in the form o ...

  8. 第一个spring,第五天。

    陈志棚:界面跳转与框架 李天麟:游戏界面ui 徐侃:算法代码的设计 经过五天的时间,经过队员的汇报,我们初步已经完成了各项的任务.

  9. Ns3 构建哑铃型拓扑,并实现两个点的TCP连接(详细请戳全文)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaUAAADlCAIAAAB8n38hAAAV8UlEQVR4nO3dMWjjyBoH8CkNj1uc5v

  10. Fast R-CNN论文阅读笔记

    论文地址:Fast R-CNN R-CNN的缺陷 (1)训练是一个多级的流水线.R-CNN首先在候选目标上微调一个卷积神经网络,使用log loss.然后使用SVMs充当目标分类器,以取代softma ...