與請求/回答這種同步模式不同,發(fā)布/訂閱模式解耦了發(fā)布消息的客戶(發(fā)布者)與訂閱消息的客戶(訂閱者)之間的關(guān)系,這意味著發(fā)布者和訂閱者之間并不需要直接建立聯(lián)系。打個比方,你打電話給朋友,一直要等到朋友接電話了才能夠開始交流,是一個典型的同步請求/回答的場景;而給一個好友郵件列表發(fā)電子郵件就不一樣,你發(fā)好電子郵件該干嘛干嘛,好友們到有空了去查看郵件就是了,是一個典型的異步發(fā)布/訂閱的場景。
熟悉編程的同學(xué)一定非常熟悉這種設(shè)計模式了,因為它帶來了這些好處:
- 發(fā)布者與訂閱者不比了解彼此,只要認(rèn)識同一個消息代理即可。
- 發(fā)布者和訂閱者不需要交互,發(fā)布者無需等待訂閱者確認(rèn)而導(dǎo)致鎖定。
- 發(fā)布者和訂閱者不需要同時在線,可以自由選擇時間來消費消息。