Redis简单的发布与订阅
发布——publish
/**
* 发布者
*/
@Service
public class RedisDemoPublish {
public RedisDemoPublish() {
}
@Resource(name = "redisTemplate")
private RedisTemplate redisTemplate;
public void publish(){
ChannelTopic topic = new ChannelTopic("testRedis");
redisTemplate.convertAndSend(topic.getTopic(),"Hi,I'm redis!");
}
}
订阅——subscribe
创建监听类-实现MessageListener接口
public class MessageListen implements MessageListener {
public MessageListen() {
}
@Override
public void onMessage(Message message, byte[] bytes) {
System.out.println("订阅的消息是:"+message);
}
}
创建配置类–订阅频道
@Configuration
public class MessageConfig {
@Bean
MessageListenerAdapter messageListener(){
return new MessageListenerAdapter(new MessageListen());
}
@Bean
RedisMessageListenerContainer redisContainer(RedisConnectionFactory factory) {
//容器
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
//设置连接工厂
container.setConnectionFactory(factory);
//订阅topic
container.addMessageListener(messageListener(), topic());
//container.addMessageListener(messageListener(), topic2());
//可订阅多个频道
//创建线程池
container.setTaskExecutor(Executors.newFixedThreadPool(4));
return container;
}
@Bean
ChannelTopic topic() {
return new ChannelTopic("testRedis");
}
}
调用发布方法,即可在控制台看到发布的消息