springboot redis 实现消息发布/订阅

发布消息

stringRedisTemplate.convertAndSend("myMsgChannel", "Any Message");

订阅消息

// 创建消息监听器容器
@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

posted on 2022-04-11 22:38  路过君  阅读(11)  评论(0编辑  收藏  举报

导航