博客详情

springboot中redis的topic消息主题监听 (原创)

作者: 朝如青丝暮成雪
发布时间:2019-09-24 14:36:08  文章分类:java编程   阅读(3980)  评论(0)

应用A : 推送主题消息

public void   updateUser{

// some code   update db


//推送redis消息

redisTemplate.execute(new RedisCallback() {
@Override
public Object doInRedis(RedisConnection connection) throws DataAccessException {
//推送redis主题消息
connection.publish("topic_sysUser_update".getBytes(),
JSON.toJSONString(sysUser).getBytes());
return null;
}
});


}




应用B: 监听指定主题的消息(topic_sysUser_update


@Configuration
public class RedisConfig {

	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Bean
	public RedisTemplate redisTemplate(JedisConnectionFactory connectionFactory) {

		RedisTemplate redisTemplate = new RedisTemplate();
		//StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
		MyRedisKeySerializer  myRedisKeySerializer =new MyRedisKeySerializer();
		
		GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
		redisTemplate.setConnectionFactory(connectionFactory);
		redisTemplate.setKeySerializer(myRedisKeySerializer);//键
		redisTemplate.setHashKeySerializer(myRedisKeySerializer);//键
		redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);//值
		redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);//值

		return redisTemplate;
	}

	@Bean
	public RedisHelper redisHelper(RedisTemplate redisTemplate) {
		RedisHelper redisHelper = new RedisHelper();

		redisHelper.setRedisTemplate(redisTemplate);
		return redisHelper;
	}
	
	//redis监听容器 
    @Bean
    public RedisMessageListenerContainer listenerContainer(RedisConnectionFactory connectionFactory){
    	System.out.println("RedisMessageListenerContainer 创建");
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
//      container.addMessageListener(expireMessageListener,new ChannelTopic("__keyevent@0__:expired"));
     //   container.addMessageListener(myRedisListener(), new ChannelTopic("__keyevent@0__:expired"));
        container.addMessageListener(sysUserUpdateRedisListener(), new ChannelTopic("topic_sysUser_update"));
        return container;
    }
    
 //   @Bean
 //  public MyRedisListener myRedisListener() {
 // 	return new MyRedisListener();
 //  }
    
    @Bean
    public SysUserUpdateRedisListener  sysUserUpdateRedisListener() {
    	return new  SysUserUpdateRedisListener();
    }

}



监听器类 SysUserUpdateRedisListener 


public class SysUserUpdateRedisListener implements MessageListener{

@Override
public void onMessage(Message message, byte[] pattern) {
System.out.println("SysUserUpdateListener监听到消息");

String body = new String(message.getBody());//消息体内容
String topic =new String(pattern);//redis的消息主题名称: topic_sysUser_update 
System.out.println("消息体内容:"+body);
System.out.println("redis的消息主题名称:"+topic);

}

}





关键字:  redis
评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号