數據庫還能通信,真是學習了!!!
先寫一個方法,訂閱消息:
@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好用一些。