ActiveMQ一之JMS簡介

個人專題目錄


一、JMS簡介

全稱:Java Message Service 中文:Java消息服務。

JMS是Java的一套API標準,最初的目的是為了使應用程序能夠訪問現(xiàn)有的MOM系統(tǒng)(MOM是Message Oriented Middleware的英文縮寫,指的是利用高效可靠的消息傳遞機制進行平臺無關的數(shù)據(jù)交流,并基于數(shù)據(jù)通信來進行分布式系統(tǒng)的集成。);后來被許多現(xiàn)有的MOM供應商采用,并實現(xiàn)為MOM系統(tǒng)?!境R奙OM系統(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ā)送消息時接收者不可用,消息隊列會保留消息,直到可以成功地傳遞它。

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

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

多個應用之間的耦合,由于消息是平臺無關和語言無關的,而且語義上也不再是函數(shù)調用,因此更適合作為多個應用之間的松耦合的接口。基于消息隊列的耦合,不需要發(fā)送方和接收方同時在線。

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

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

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

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

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

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容