1. 程式人生 > >Redis學習筆記(6)訊息的訂閱與釋出

Redis學習筆記(6)訊息的訂閱與釋出

資料庫還能通訊,真是學習了!!!

先寫一個方法,訂閱訊息:

    @Test
    public void redis_test_message_subscribe() {
        JedisPubSub jedisPubSub = new JedisPubSub() {
            @Override
            public void onMessage(String channel, String message) {
                super.onMessage(channel, message);
                //處理回撥
                System.out.println(channel + ":" + message);
            }
        };
        //訂閱
        jedis.subscribe(jedisPubSub, "chat");
    }

跑起來看看:


可以看出,這個測試方法並沒有立即結束,因為有個回撥,正在監聽訊息。

加下來我們要寫一個方法,來發布訊息。

@Test
    public void redis_test_message_publish() {
        //釋出
        jedis.publish("chat", "社會主義好");

    }
這個方法就一行,釋出一條訊息,訊息頻道和訂閱的頻道要一致。

把釋出者啟動起來:



釋出者執行起來就結束了。切換到訂閱者,可以看到已經收到訊息。


但是,我們也發現訂閱者還是沒有結束,監聽還在繼續,他在繼續等待訊息。

我們嘗試把訊息內容改變一下,重新執行釋出者。

看看結果:


訂閱者收到了新的訊息,而且仍然在繼續監聽。

個人感覺這個有利於在分散式的服務中做遠端呼叫,感覺要比WebSocket好用一些。