講AMQP之前,先講下傳統(tǒng)的JMS的消息模型,JMS中主要有三個參與者:消息的生產(chǎn)者、消費者、傳遞消息的通道(隊列或者主題),兩種消息模型如下:
通道是隊列:
通道是隊列:
通道是主題:
在JMS中,雖然通道有助于解耦消息的生產(chǎn)者和消費者,但這兩者依然會與通道相耦合。生產(chǎn)者會將消息發(fā)布到一個特定的隊列或主題上,消費者從特定的隊列或主題上接收這些消息,通道具有雙重責任,就是傳遞數(shù)據(jù)和確定這些消息該發(fā)送到什么地方,隊列的話會使用點對點算法發(fā)送,主題的話就使用發(fā)布-訂閱方式。
而使用AMQP的話,生產(chǎn)者并不會直接將消息發(fā)布到隊列中,AMQP的消息的生產(chǎn)者以及傳遞消息的隊列之間引入間接機制Exchange,Exchange再與隊列綁定。關(guān)系圖如下:
從圖可以看出Exchange收到消息后,Exchange會將信息路由到隊列上,消費者再從隊列中取數(shù)據(jù)并處理。這里Exchange不是簡單地把消息傳遞到隊列中,AMQP定義了四種不同類型的Exchange,每種都有不同的路由算法,以此決定是否將信息放到隊列中。根據(jù)Exchange算法的不同,