1. @Component("sub")
  2. public class Sub implements MessageListener{
  3.  
  4. @Autowired
  5. private StringRedisSerializer stringRedisSerializer;
  6.  
  7. /* (非 Javadoc)
  8. * Description:
  9. * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
  10. */
  11. @Override
  12. public void onMessage(Message message, byte[] pattern) {
  13. byte[] body = message.getBody();//请使用valueSerializer
  14. byte[] channel = message.getChannel();
  15. String msg = (String)stringRedisSerializer.deserialize(body);
  16. String topic = (String)stringRedisSerializer.deserialize(channel);
  17. System.out.println("我是sub,监听"+topic+",我收到消息:"+msg);
  18. }
  19.  
  20. }
  1. @Component("sub2")
  2. public class Sub2 implements MessageListener{
  3.  
  4. @Autowired
  5. private StringRedisSerializer stringRedisSerializer;
  6.  
  7. @Autowired
  8. private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
  9.  
  10. /* (非 Javadoc)
  11. * Description:
  12. * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
  13. */
  14. @Override
  15. public void onMessage(Message message, byte[] pattern) {
  16. byte[] body = message.getBody();//请使用valueSerializer
  17. byte[] channel = message.getChannel();
  18. String msg = (String)stringRedisSerializer.deserialize(body);
  19. String topic = (String)stringRedisSerializer.deserialize(channel);
  20. System.out.println("我是sub2,监听"+topic+",我收到消息:"+msg);
  21. }
  22.  
  23. }
  1. @Component("sub3")
  2. public class Sub3 implements MessageListener{
  3.  
  4. @Autowired
  5. private GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer;
  6. @Autowired
  7. private StringRedisSerializer stringRedisSerializer;
  8.  
  9. @Autowired
  10. private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
  11.  
  12. /* (非 Javadoc)
  13. * Description:
  14. * @see org.springframework.data.redis.connection.MessageListener#onMessage(org.springframework.data.redis.connection.Message, byte[])
  15. */
  16. @Override
  17. public void onMessage(Message message, byte[] pattern) {
  18.  
  19. byte[] body = message.getBody();//请使用valueSerializer
  20. byte[] channel = message.getChannel();
  21. User u = jackson2JsonRedisSerializer.deserialize(body,User.class);
  22.  
  23. String topic = (String)stringRedisSerializer.deserialize(channel);
  24. System.out.println("我是sub3,监听"+topic+",我收到消息:"+u.getId()+"--"+u.getName());
  25. }
  26.  
  27. }
  1. @Service
  2. public class Pub {
  3.  
  4. @Autowired
  5. @Resource(name="redisTemplate")
  6. private RedisTemplate<String, String> rt;
  7.  
  8. @Autowired
  9. private GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer;
  10.  
  11. @Autowired
  12. private JdkSerializationRedisSerializer jdkSerializationRedisSerializer;
  13.  
  14. public void sendMessage(String channel, String message) {
  15. rt.convertAndSend(channel, message);
  16. }
  17. public void sendMessage(String channel, User user) {
  18. byte[] msg =jackson2JsonRedisSerializer.serialize(user);
  19. rt.convertAndSend(channel, new String(msg));
  20.  
  21. // rt.convertAndSend(channel, user);
  22. }
  23.  
  24. }
  1. @RunWith(SpringJUnit4ClassRunner.class)
  2. @ContextConfiguration(locations = "classpath:conf/spring/spring*.xml")
  3. public class PubSubTest {
  4.  
  5. @Autowired
  6. private Pub pub;
  7.  
  8. @Test
  9. public void test() throws InterruptedException{
  10. User u = new User();
  11. u.setId("1");
  12. u.setName("wzg");
  13. pub.sendMessage("dddchannel", "我发消息了");
  14. pub.sendMessage("cccchannel", u);
  15. Thread.sleep(100);//jackson 反向序列化慢
  16.  
  17. }
  18.  
  19. }

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. kafka的简单理解

    经典组合: Flume+Kafka+Storm+HDFS/HBase Flume:分布式采集 Kafka:分布式缓存 Kafka简介: 一种分布式的.基于发布/订阅的消息系统(Scala编写的) Ka ...

  2. Actual Time Cost

  3. 20135220谈愈敏Blog2_操作系统是如何工作的

    操作系统是如何工作的 谈愈敏 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计 ...

  4. team330团队铁大兼职网站使用说明

    项目名称:铁大兼职网站 项目形式:网站 网站链接:http://39.106.30.16:8080/zhaopinweb/mainpage.jsp 开发团队:team330 网站上线时间:2018年1 ...

  5. python 如何写CMD命令工具

    #-*- coding: UTF- -*- import argparse import sys: sys.argv.append('--help') parser = argparse.Argume ...

  6. BroadcastReceiver介绍

    参考资料 : 基础总结篇之五:BroadcastReceiver应用详解 BroadcastReceiver用于接收广播信息,可以通过sendBroadcast等方法进行发送.sendBroadcas ...

  7. 关于“Scrum敏捷项目管理”

    此次关于“Scrum”的名词解析,主要目的是为我们的“OneZero”团队确定项目开发的模式. http://www.cnblogs.com/taven/archive/2010/10/17/1853 ...

  8. angular学习总结

    因为学习需要,要配置一系列环境,中间又出了很多各种各样的花式错误,因此当做个人总结记录一下.一.vs1. 完全卸载VS2013找到vs2013的安装包,如图 打开cmd命令行窗口,cd到安装包下的vs ...

  9. [代码]--GridControl使用技巧总结,更新中...

    1如何禁用GridControl中单击列弹出右键菜单 设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false 2如何定位到第一条数据/记 ...

  10. BZOJ2653 middle(二分答案+主席树)

    与中位数有关的题二分答案是很常用的trick.二分答案之后,将所有大于它的看成1小于它的看成-1,那么只需要判断是否存在满足要求的一段和不小于0. 由于每个位置是1还是-1并不固定,似乎不是很好算.考 ...