应用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 RedisTemplateredisTemplate(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);
}
}
Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1