讓我們從訂閱開始。正如您所料,訂閱用於在希望獲得服務資訊的客戶端應用程式和提供該資訊的服務之間建立訂閱。例如,sip**可能訂閱語音郵件服務,以便在訊息等待時點亮其紅色訊息等待指示符,並在讀取所有訊息後關閉該指示符。另乙個例子可能是訂閱e-911系統的第一響應者,以了解有需要的人何時撥打9-1-1。最後,醫生智慧型手機上的應用程式可能會訂閱心電圖機,以了解患者的ekg讀數何時表明患者存在嚴重問題。
下乙個最重要的訊息是publish。當服務具有要報告的內容時,將使用「發布」。在我們之前的示例中,sip**訂閱了語音郵件服務。當該語音郵件服務想要報告新的語音郵件時,它會傳送一條發布訊息,其中包含有關語音郵件和離開它的呼叫者的資訊。同樣,當有人撥打9-1-1時,該e-911服務將傳送發布訊息。該發布訊息將包含基本的e-911資訊,如呼叫者的**號碼,但它也可能包含呼叫者的gps座標以及呼叫者附近的閉路攝像機的位置。心電圖的發布訊息可能包含患者姓名,房間號和心電圖讀數。
現在我們談論一下通知。當使用者,裝置或應用程式訂閱時,它不會將訂閱傳送到它訂閱的服務。相反,它將其傳送到**(例如,presence 伺服器),該**管理所有使用者,裝置或應用程式可能為該服務或任何其他服務建立的訂閱。因此,當sip實體傳送發布訊息時,它不會將該訊息直接傳送給訂戶。它也與訂閱經紀人說話。經紀人有責任接受訂閱訊息以在訂閱者和服務之間建立繫結。現在,當**收到發布時,它會搜尋其繫結表,以了解誰對發布訊息包含的資訊感興趣,並將notify訊息傳送給這些使用者,應用程式或裝置。這允許單個「發布」訊息在該服務存在多個訂閱時生成多個notify訊息。
回到我們之前的例子,訂閱服務將在留下語音郵件時向sip**傳送notify訊息,在有人撥打9-1-1時向緊急響應者傳送訊息,在病人血壓讀數表示重大問題時向醫生傳送訊息。訂戶和服務之間的這種鬆散耦合允許顯著的可擴充套件性。它還允許服務專注於它提供的服務,而不必關心訂閱者身份驗證,阻止列表,notify訊息的分發等。
我想讓你想到你作為使用者可能有興趣訂閱的所有內容。想象一下,您是電子電路板的**商。當這些電路的原始元件庫存過低時,您是否有興趣非同步通知?想象一下,你在倉庫工作,想知道附近有一輛送貨卡車。如果您可以訂購該卡車的gps座標並在距離您所在位置十英里的範圍內收到通知,它會改善效能嗎?
通過sip訂閱,發布和通知,您可以建立的整合型別和「業務通訊混搭」的可能性是無窮無盡的。
redis高階4 訊息通知 訂閱發布
1 使用lpush rpop即可實現佇列的概念。並通過迴圈,來讀取list中資料。不足 需要使用迴圈,每隔1s讀取佇列。2 brpop,有訊息加入佇列就發通知。brpop會阻塞佇列,rpop不會。brpop返回值介紹 假如在指定時間內沒有任何元素被彈出,則返回乙個 nil 和等待時長。反之,返回乙個...
Redis 發布和訂閱
發布與訂閱 又稱pub sub 訂閱者 listener 負責訂閱頻道 channel 傳送者 publisher 負責向頻道傳送二進位制字串訊息 binary string message 每當有訊息被傳送給指定頻道的時候,頻道都所有訂閱者都會收到訊息。redis提供都5個發布訂閱命令 命令描述 ...
Python redis 訂閱和發布
發布和訂閱 首先定義乙個redishelper類,連線redis,定義頻道為monitor,定義發布 publish 及訂閱 subscribe 方法。usr bin env python coding utf 8 import redis class redishelper object def ...