@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. React笔记-首次渲染

    渲染机制 渲染机制主要分为两部分: 首次渲染和更新渲染. 首次渲染 首先通过一个小例子,来讲解首次渲染过程. <!DOCTYPE html> <html lang="en& ...

  2. 在HTML中为JavaScript传递变量

    在html中为JavaScript传递变量是一个关键步骤,然后就可以通过对JavaScript变量操作,实现想要达到的目的 本节代码主要使用了JavaScript中的document对象中的getEl ...

  3. k8s之使用secret获取私有仓库镜像

    一.前言 其实这次实践算不上特别复杂,只是在实践过程中遇到了一些坑,以及填坑的方法是非常值得在以后的学习过程中参考借鉴的 二.知识准备 1.harbor是一个企业级的镜像仓库,它比起docker re ...

  4. 用 C 语言描述几种排序算法

    排序算法是最基本且重要的一类算法,本文基于 VS2017,使用 C 语言来实现一些基本的排序算法. 一.选择排序 选择排序,先找到数组中最小的元素,然后将这个元素与数组的第一个元素位置互换(如果第一个 ...

  5. CodeMirror mode编写

    Writing CodeMirror Modes Modes typically consist of a single JavaScript file. This file defines, in ...

  6. BackBone及其实例探究

      摘要 我们小组对MVC框架进行了学习.我的队友们已经在博客中对MVC的设计模式及优缺点进行了详细的探讨与分析,因此我的博客中只对MVC进行简单的介绍,而我将把重心放在Backbone MVC框架一 ...

  7. Beta任务项录入

    今天PM把任务项整理写入TFS中,明天开始正式开发工作:

  8. oracle not in minus 取到的结果集不同

    not in:A not in B B中的集合不能包含空值

  9. 第二个Sprint冲刺第 九天(燃尽图)

  10. beta5

    吴晓晖(组长) 过去两天完成了哪些任务 完善推荐算法 展示GitHub当日代码/文档签入记录 接下来的计划 推荐算法 还剩下哪些任务 组员:刘帅珍 过去两天完成了哪些任务: 修改原型,整理背景 明日计 ...