講AMQP之前,先講下傳統(tǒng)的JMS的消息模型,JMS中主要有三個參與者:消息的生產(chǎn)者、消費(fèi)者、傳遞消息的通道(隊(duì)列或者主題),兩種消息模型如下:
通道是隊(duì)列:

通道是隊(duì)列:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

通道是主題:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

在JMS中,雖然通道有助于解耦消息的生產(chǎn)者和消費(fèi)者,但這兩者依然會與通道相耦合。生產(chǎn)者會將消息發(fā)布到一個特定的隊(duì)列或主題上,消費(fèi)者從特定的隊(duì)列或主題上接收這些消息,通道具有雙重責(zé)任,就是傳遞數(shù)據(jù)和確定這些消息該發(fā)送到什么地方,隊(duì)列的話會使用點(diǎn)對點(diǎn)算法發(fā)送,主題的話就使用發(fā)布-訂閱方式。
而使用AMQP的話,生產(chǎn)者并不會直接將消息發(fā)布到隊(duì)列中,AMQP的消息的生產(chǎn)者以及傳遞消息的隊(duì)列之間引入間接機(jī)制Exchange,Exchange再與隊(duì)列綁定。關(guān)系圖如下:

iOS培訓(xùn),Swift培訓(xùn),蘋果開發(fā)培訓(xùn),移動開發(fā)培訓(xùn)

從圖可以看出Exchange收到消息后,Exchange會將信息路由到隊(duì)列上,消費(fèi)者再從隊(duì)列中取數(shù)據(jù)并處理。這里Exchange不是簡單地把消息傳遞到隊(duì)列中,AMQP定義了四種不同類型的Exchange,每種都有不同的路由算法,以此決定是否將信息放到隊(duì)列中。根據(jù)Exchange算法的不同,

網(wǎng)友評論