1. 编写MessageListener
@Component
@Slf4j
public class LifeRedisMessageListener implements MessageListener {
@Autowired
private RedisTemplate redisTemplate;
@Override
public void onMessage(Message message, byte[] pattern) {
RedisSerializer keySerializer = redisTemplate.getKeySerializer();
RedisSerializer valueSerializer = redisTemplate.getValueSerializer();
log.info("----------Life接收到发布者消息----------");
log.info("|频道:{}",keySerializer.deserialize(message.getChannel()));
log.info("|当前监听器绑定的pattern:{}",new String(pattern));
log.info("|消息内容:{}",valueSerializer.deserialize(message.getBody()));
log.info("---------------------------------");
}
}
2. 配置监听规则
@Configuration
public class RedisMessageListenerConfiguration {
@Autowired
private LifeRedisMessageListener lifeRedisMessageListener;
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public RedisMessageListenerContainer container() {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisConnectionFactory);
List<PatternTopic> topicList = Arrays.asList(new PatternTopic("life.*"),new PatternTopic("*.life"));
container.addMessageListener(lifeRedisMessageListener, topicList);
return container;
}
}
3. 测试发送消息
redisTemplate.convertAndSend("life.all","hello publish/subscribe");