異步消息有兩個(gè)主要的概念:消息代理(message broker)和目的地(destination)。當(dāng)一個(gè)應(yīng)用發(fā)送消息時(shí),會(huì)將消息交給一個(gè)消息代理。消息代理可以確保消息被投遞到指定的目的地,同時(shí)解放發(fā)送者,使其能夠繼續(xù)進(jìn)行其他的業(yè)務(wù)。
消息系統(tǒng)會(huì)提供不同的消息路由模式,通用的兩種目的地:隊(duì)列(queue)和主題(topic)。每種類型都與特定的消息模型相關(guān)聯(lián),分別是點(diǎn)對(duì)點(diǎn)模型(隊(duì)列)和發(fā)布/訂閱模型(主題)。
點(diǎn)對(duì)點(diǎn)消息模型:每一條消息都有一個(gè)發(fā)送者和一個(gè)接收者。雖然隊(duì)列可以有多個(gè)接收者,但每條消息只能被一個(gè)接收者取走。
發(fā)布—訂閱消息模型:消息可以被所有監(jiān)聽(tīng)一個(gè)主題的接收者收到。
同步同學(xué)機(jī)制訪問(wèn)遠(yuǎn)程服務(wù)的客戶端存在幾個(gè)限制:
同步通信意味著等待。當(dāng)客戶端調(diào)用遠(yuǎn)程服務(wù)的方法時(shí),它必須等待遠(yuǎn)程方法結(jié)束才能繼續(xù)執(zhí)行。如果客戶端與遠(yuǎn)程服務(wù)頻繁通信,或者遠(yuǎn)程服務(wù)響應(yīng)很慢,就會(huì)對(duì)客戶端應(yīng)用的性能帶來(lái)負(fù)面影響。
客戶端通過(guò)服務(wù)接口與遠(yuǎn)程服務(wù)相耦合。如果服務(wù)的接口發(fā)生變化,此服務(wù)的所有客戶端都需要做相應(yīng)的改變。
客戶端與遠(yuǎn)程服務(wù)的位置耦合。客戶端必須配置服務(wù)的網(wǎng)絡(luò)位置,這樣它才知道如何與遠(yuǎn)程服務(wù)進(jìn)行交互。如果網(wǎng)絡(luò)拓?fù)溥M(jìn)行調(diào)整,客戶端也需要重新配置新的網(wǎng)絡(luò)位置。
客戶端與服務(wù)的可用性相耦合。如果遠(yuǎn)程服務(wù)不可用,客戶端實(shí)際上也無(wú)法正常運(yùn)行。