ActiveMQ一之JMS簡介

個人專題目錄


一、JMS簡介

全稱:Java Message Service 中文:Java消息服務(wù)。

JMS是Java的一套API標(biāo)準(zhǔn),最初的目的是為了使應(yīng)用程序能夠訪問現(xiàn)有的MOM系統(tǒng)(MOM是Message Oriented Middleware的英文縮寫,指的是利用高效可靠的消息傳遞機制進行平臺無關(guān)的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。);后來被許多現(xiàn)有的MOM供應(yīng)商采用,并實現(xiàn)為MOM系統(tǒng)。【常見MOM系統(tǒng)包括Apache的ActiveMQ、阿里巴巴的RocketMQ、IBM的MQSeries、Microsoft的MSMQ、BEA的RabbitMQ等。(并非全部的MOM系統(tǒng)都遵循JMS規(guī)范)】

基于JMS實現(xiàn)的MOM,又被稱為JMS Provider。

“消息”是在兩臺計算機間傳送的數(shù)據(jù)單位。消息可以非常簡單,例如只包含文本字符串;也可以更復(fù)雜,可能包含嵌入對象。

消息被發(fā)送到隊列中?!跋㈥犃小笔窃谙⒌膫鬏斶^程中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標(biāo)時充當(dāng)中間人。隊列的主要目的是提供路由并保證消息的傳遞;如果發(fā)送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。

消息隊列的主要特點是異步處理,主要目的是減少請求響應(yīng)時間和解耦。所以主要的使用場景就是將比較耗時而且不需要即時(同步)返回結(jié)果的操作作為消息放入消息隊列。同時由于使用了消息隊列,只要保證消息格式不變,消息的發(fā)送方和接收方并不需要彼此聯(lián)系,也不需要受對方的影響,即解耦和。如:

跨系統(tǒng)的異步通信,所有需要異步交互的地方都可以使用消息隊列。就像我們除了打電話(同步)以外,還需要發(fā)短信,發(fā)電子郵件(異步)的通訊方式。

多個應(yīng)用之間的耦合,由于消息是平臺無關(guān)和語言無關(guān)的,而且語義上也不再是函數(shù)調(diào)用,因此更適合作為多個應(yīng)用之間的松耦合的接口?;谙㈥犃械鸟詈希恍枰l(fā)送方和接收方同時在線。

在企業(yè)應(yīng)用集成(EAI)中,文件傳輸,共享數(shù)據(jù)庫,消息隊列,遠程過程調(diào)用都可以作為集成的方法。

應(yīng)用內(nèi)的同步變異步,比如訂單處理,就可以由前端應(yīng)用將訂單信息放到隊列,后端應(yīng)用從隊列里依次獲得消息處理,高峰時的大量訂單可以積壓在隊列里慢慢處理掉。由于同步通常意味著阻塞,而大量線程的阻塞會降低計算機的性能。

消息驅(qū)動的架構(gòu)(EDA),系統(tǒng)分解為消息隊列,和消息制造者和消息消費者,一個處理流程可以根據(jù)需要拆成多個階段(Stage),階段之間用隊列連接起來,前一個階段處理的結(jié)果放入隊列,后一個階段從隊列中獲取消息繼續(xù)處理。

應(yīng)用需要更靈活的耦合方式,如發(fā)布訂閱,比如可以指定路由規(guī)則。

跨局域網(wǎng),甚至跨城市的通訊,比如北京機房與廣州機房的應(yīng)用程序的通信。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容