Redis學習筆記(6)訊息的訂閱與釋出
阿新 • • 發佈:2019-02-02
資料庫還能通訊,真是學習了!!!
先寫一個方法,訂閱訊息:
@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好用一些。