springboot + redis 发布订阅模式
注册订阅类
public class MessageReceiver {
/**接收消息的方法*/
public void receiveMessage(String message){
System.out.println("收到一条消息:"+message);
}
}
@Bean
public MessageReceiver messageReceiver(){
return new MessageReceiver();
}
@Bean
public MessageListenerAdapter messageListenerAdapter(MessageReceiver messageReceiver){
return new MessageListenerAdapter(messageReceiver,"receiveMessage");
}
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
//订阅了一个叫chat 的通道
container.addMessageListener(listenerAdapter, new PatternTopic("chat"));
//这个container 可以添加多个 messageListener
return container;
}
发布消息API
stringRedisTemplate.convertAndSend("chat",message);