应用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);
}
}


阅读排行


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