91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot中如何使用redis的發布和訂閱模式

發布時間:2021-07-07 16:04:06 來源:億速云 閱讀:187 作者:chen 欄目:大數據

本篇內容主要講解“Spring Boot中如何使用redis的發布和訂閱模式”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spring Boot中如何使用redis的發布和訂閱模式”吧!

redis不僅是一個非常強大的非關系型數據庫,它同時還擁有消息中間件的pub/sub功能,在spring boot中進行如下設置就可以使用redis的pub/sub功能:

1.創建redis監聽的設置類

@Configuration
public class RedisSubListenerConfig {
   //初始化監聽器
    [@Bean](https://my.oschina.net/bean)
    RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
            MessageListenerAdapter listenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        container.addMessageListener(listenerAdapter, new PatternTopic("這里是監聽的通道的名字"));
        return container;
    }
   //利用反射來創建監聽到消息之后的執行方法
    [@Bean](https://my.oschina.net/bean)
    MessageListenerAdapter listenerAdapter(RedisReceiver redisReceiver) {
        return new MessageListenerAdapter(redisReceiver, "receiveMessage");
    }
  
  //使用默認的工廠初始化redis操作模板
    [@Bean](https://my.oschina.net/bean)
    StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
        return new StringRedisTemplate(connectionFactory);
    }
}

2.創建監聽之后的receiver方法類

[@Service](https://my.oschina.net/service)
public class RedisReceiver {
    @Autowired
    RedisService redisService;

    public void receiveMessage(String message) {
        //這里是收到通道的消息之后執行的方法
    }
}

3.使用reidsTemplate向通道發送消息

@Service
public class RedisService {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
  //向通道發送消息的方法
    public void sendChannelMess(String channel, String message) {
        stringRedisTemplate.convertAndSend(channel, message);
    }
}

附:有些設置在RedisReceiver接受類構造器中傳入了CountDownLatch來控制線程,如果不需要控制線程可以不用。

舉例

@Component
@Slf4j
public class MessageReceiver {

    @Autowired
    ISocketService socketService;

    /**接收消息的方法
     * @throws Exception */
    public void receiveMessage(String message) throws Exception {
        log.info("收到一條消息From Redis:" + message);
        Message msg = JSON.parseObject(message, Message.class);
        if (null == msg.getAction()) {
            throw new Exception("必須設置客戶端收到消息后需要執行的動作");
        }
        if (null == msg.getTableId() || "".equals(msg.getTableId())) {
            throw new Exception("必須設置接收消息的桌碼!");
        }
        if (msg.getAction().equals(Event.NOTICEOTHER)) {
            NoticeOtherDto noticeOtherDto = JSON.parseObject(msg.getData().toString(), NoticeOtherDto.class);
            msg.setData(noticeOtherDto.getData());
            socketService.noticeOther(msg.getTenantId() + "-" + msg.getTableId(), noticeOtherDto.getEventName(), msg);
        } else {
            // 通過WebSocket群發消息
            socketService.sendMessageToTable(msg.getTenantId() + "-" + msg.getTableId(), msg.getAction(), msg);
        }

    }
}
@Component
public class MessageSender {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    public void sendMessage(Message message) {
        stringRedisTemplate.convertAndSend(RedisConstant.TOPIC_KEY, JSON.toJSONString(message));
    }
}

到此,相信大家對“Spring Boot中如何使用redis的發布和訂閱模式”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥乡县| 桐梓县| 河津市| 宜川县| 宜兴市| 孟州市| 安丘市| 柳江县| 潼南县| 平昌县| 阜南县| 综艺| 忻州市| 昭平县| 饶阳县| 凉山| 株洲县| 方城县| 平塘县| 肇源县| 苏尼特左旗| 丰顺县| 乌拉特后旗| 台北市| 武威市| 调兵山市| 新化县| 雷山县| 黎城县| 庆元县| 宝丰县| 信阳市| 霍邱县| 五华县| 西安市| 柞水县| 工布江达县| 达孜县| 常宁市| 苏尼特左旗| 交城县|