springboot redis 实现消息发布/订阅

2021-12-07 16:01:02 浏览数 (3)

发布消息

代码语言: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);
    }
}

注意

  1. 可使用PatternTopic代替ChannelTopic实现监听多个主题
  2. 没有调用adapter.afterPropertiesSet();将报错如下

ERROR o.s.d.r.listener.adapter.MessageListenerAdapter - Listener execution failed

0 人点赞