发布消息
代码语言:javascript复制stringRedisTemplate.convertAndSend("myMsgChannel", "Any Message");
订阅消息
代码语言:javascript复制// 创建消息监听器容器
@Bean
public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer listenerContainer = new RedisMessageListenerContainer();
listenerContainer.setConnectionFactory(connectionFactory);
return listenerContainer;
}
// 注册消息监听器
public void addListener(RedisMessageListenerContainer container) {
MessageListenerAdapter adapter = new MessageListenerAdapter(
new MyListener(), // 监听器实现类
"onMessage" // 消息处理方法
);
// 一定要调用此方法
adapter.afterPropertiesSet();
// 监听特定的主题
container.addMessageListener(adapter, new ChannelTopic("myMsgChannel"));
}
public class MyListener {
public void onMessage(String message) {
System.out.println("received msg:" message);
}
}
注意
- 可使用PatternTopic代替ChannelTopic实现监听多个主题
- 没有调用adapter.afterPropertiesSet();将报错如下
ERROR o.s.d.r.listener.adapter.MessageListenerAdapter - Listener execution failed