Redis发布与订阅

2024-02-02 01:00:32

顾名思义:发布与订阅是广播模式

分类

发布与订阅分为频道订阅模式订阅
频道订阅:订阅topicA、topicB,订阅者只会接收到这两个频道上发布的消息。
模式订阅:订阅topic*,订阅者将接收到所有匹配模式的频道上发布的消息。

详解

订阅频道

推送消息

频道数据结构


pubsub_channels 是一个字典,key是频道名,value是订阅客户端的链表。

模式数据结构

使用

    @Bean
    public RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
                                                   MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        // 模式订阅
        container.addMessageListener(listenerAdapter, new PatternTopic("topic*"));
        // 频道订阅
        container.addMessageListener(listenerAdapter, new ChannelTopic("topicA"));
        return container;
    }

    // 消息监听适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法
    @Bean
    public MessageListenerAdapter listenerAdapter() {
        return new MessageListenerAdapter(new Receiver(), "receiveMessage");
    }
    class Receiver {
        public void receiveMessage(String message) {
            System.out.println(message);
        }
    }
    @RequestMapping("test")
    void test(){
        redisTemplate.convertAndSend("topicA","topicA message");
        redisTemplate.convertAndSend("topicB","topicB message");
        redisTemplate.convertAndSend("topicC","topicC message");
    }
posted @ 2024-02-02 00:33  帅气的涛啊  阅读(28)  评论(0编辑  收藏  举报