老王的睡前小故事,讓你輕松理解什么是消息中間件
為什么需要使用消息中間件
在介紹消息中間件之前,我們先來(lái)看一個(gè)故事:
老王的睡前故事:
在很久很久以前,小明隔壁有個(gè)姓王的鄰居,姑且就叫隔壁老王吧。隔壁老王有個(gè)大女兒,名叫王蘭花秀麗,秀麗從小就愛(ài)聽老王講睡前故事,每晚在入睡前都要老王講了睡前故事才能睡的得著。但某一天秀麗到了外地去上大學(xué),老王為了能給秀麗講故事,只能通過(guò)打電話的方式進(jìn)行,如下:
但是有時(shí)候可能由于秀麗的手機(jī)信號(hào)不好或者沒(méi)電等情況,導(dǎo)致老王只能不停的聯(lián)系,直到電話打通為止。老王內(nèi)心:我能怎么辦,我也很絕望啊。雖然秀麗可能會(huì)比較晚才能聽到故事,但是這個(gè)過(guò)程問(wèn)題也不大。直到某一天,老王的二女兒王蘭花秀秀也到了外地去上學(xué),獨(dú)秀也愛(ài)聽老王講睡前故事。老王沒(méi)辦法,只能也給秀秀打電話。但是這樣就會(huì)導(dǎo)致獨(dú)秀等電話的時(shí)間需要等很久,因?yàn)槔贤醯孟冉o秀麗講完再給獨(dú)秀講。有時(shí)候遇到信號(hào)不好的情況就更麻煩了,這樣的話天天都需要耗到很晚,老王也感覺(jué)到身體好像被掏空:
經(jīng)歷了幾個(gè)晚上后,老王想著天天這樣子不行啊,搞得身體一天不如一天。于是作為老程序員的老王冥思苦想,想到了一個(gè)類似于消息中間件的辦法,那就是注冊(cè)一個(gè)微信公眾號(hào)。老王只需要把每天的睡前故事放到這個(gè)公眾號(hào)里,讓兩個(gè)女兒來(lái)訂閱這個(gè)公眾號(hào)就行了。那么兩個(gè)女兒不僅能夠不用等待誰(shuí)先聽完故事,老王也不用天天熬夜了,而且大家都覺(jué)得這個(gè)公眾號(hào)講的故事很好,于是來(lái)聽老王講故事的人越來(lái)越多,從此老王走上人生巔峰,真是可帶勁了:
借助了微信公總號(hào)來(lái)講故事后,老王不需要再去關(guān)心有多少人要聽故事,老王只需要把故事放到公眾號(hào)里。想聽故事的人只需要有網(wǎng)絡(luò)有微信來(lái)訂閱這個(gè)公眾號(hào)即可,這樣不僅讀者能隨時(shí)隨地聽故事,而老王也不需要被講故事的事情而耗費(fèi)太多的時(shí)間。這個(gè)故事就是詮釋了消息中間件為我們解決的一些問(wèn)題。
消息中間件概述
什么是中間件:
非底層操作系統(tǒng)軟件,非業(yè)務(wù)應(yīng)用軟件,不是直接給最終用戶使用的,不能直接給客戶帶來(lái)價(jià)值的軟件統(tǒng)稱為中間件。什么是消息中間件:
關(guān)注于數(shù)據(jù)的發(fā)送和接收,利用高效可靠的異步消息傳遞機(jī)制集成分布式系統(tǒng)消息中間件流程圖:
說(shuō)到消息中間件不得不提一下JMS規(guī)范,什么是JMS規(guī)范:
Java消息服務(wù)(Java Message Service)即JMS,是一個(gè)Java平臺(tái)中關(guān)于面向消息中間件的API,用于在兩個(gè)應(yīng)用程序之間,或分布式系統(tǒng)中發(fā)送消息,進(jìn)行異步通信。同樣的,涉及到消息中間件也需要對(duì)AMQP協(xié)議有一定的了解,什么是AMQP協(xié)議:
AMQP(advanced message queuing protocol)是一個(gè)提供統(tǒng)一消息服務(wù)的應(yīng)用層標(biāo)準(zhǔn)協(xié)議,基于此協(xié)議的客戶端與消息中間件可傳遞消息,并不受客戶端/中間件不同產(chǎn)品,不同開發(fā)語(yǔ)言條件的限制。JMS和AMQP對(duì)比:
喜歡本文的,可以在文章下方點(diǎn)個(gè)大拇指,關(guān)注我,持續(xù)更新編程干貨