redis(4)----發布訂閱

來源:互聯網
上載者:User

標籤:

  一. redis發布訂閱簡介

        發布訂閱(pub/sub)是一種訊息通訊模式,主要的目的是解耦訊息發行者和訊息訂閱者之間的耦合。pub /sub不僅僅解決發行者和訂閱者直接代碼層級耦合,也解決兩者在物理部署上的耦合。

二. 測試源碼     1. 首先啟動redis     2. 發布

        建立一個Java Project,然後再建立一個class,為其增加main方法來向redis發布訊息:

package com.luych.message.publish;import redis.clients.jedis.Jedis;public class App {    public static void main( String[] args )    {        Jedis jedis = new Jedis("127.0.0.1", 6379);        jedis.publish("Channel1", "Hello!");        jedis.publish("Channel2", "How do you do!");        jedis.close();    }}
    3. 訂閱

        建立一個Java Project,然後再建立一個class,繼承JedisPubSub:

package com.luych.message.subscribe;import redis.clients.jedis.JedisPubSub;public class Subscriber extends JedisPubSub {    @Override    public void onMessage(String channel, String message) {        System.out.println("收到訊息,來自" + channel + ",訊息內容:" + message);        super.onMessage(channel, message);    }}

        onMessage方法,為接收到訂閱訊息時候所要執行的方法。

        再建立一個class,為其增加main方法來向redis訂閱訊息:

package com.luych.message.subscribe;import redis.clients.jedis.Jedis;public class App {    public static void main( String[] args )    {        Jedis jedis = new Jedis("127.0.0.1", 6379);        jedis.subscribe(new Subscriber(), "Channel1", "Channel2");        jedis.close();    }}
    4. 測試回合

        首先,運行訂閱端(Run As Java Application),可以看到當主進程執行到jedis.subscribe時,進程即被阻塞,進入訊息監聽狀態。

        然後,運行發布端(Run As Java Application),發布端代碼執行結束後,可以看到控制台已經列印出結果了。

收到訊息,來自Channel1,訊息內容:Hello!收到訊息,來自Channel2,訊息內容:How do you do!
三. 後語

        上面這個例子非常簡單,但是也可以看出redis在做發布訂閱的優勢了。pub /sub不僅僅解決了發行者和訂閱者直接代碼層級耦合,也解決了兩者在物理部署上的耦合。redis作為一個pub/sub server,在訂閱者和發行者之間起到了訊息路由的功能。訂閱者可以通過subscribe命令向redis server訂閱自己感興趣的訊息類型,redis將訊息類型稱為通道(channel)。當發行者通過publish命令向redis server發送特定類型的訊息時。訂閱該訊息類型的全部client都會收到此訊息。這裡訊息的傳遞是多對多的。一個client可以訂閱多個 channel,也可以向多個channel發送訊息。

redis(4)----發布訂閱

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.