Java Message System简介
Java消息系統(tǒng)
在本文中,我將討論面向消息的中間件 (MOM)以及JMS如何在Enterprise Java中實(shí)現(xiàn)它。 另外,我將討論適合JMS使用的典型用例以及用于討論消息傳遞解決方案的不同術(shù)語,例如Publisher / Sender , Destination / Topic / Queue和Subscriber / Receiver 。 我將介紹兩種消息拓?fù)?#xff1a; 點(diǎn)對(duì)點(diǎn)和發(fā)布/訂閱 。
資料存取層
在Java EE應(yīng)用程序的典型體系結(jié)構(gòu)中,數(shù)據(jù)訪問層具有與數(shù)據(jù)存儲(chǔ)通信的技術(shù),例如Java Persistence API (JPA),將應(yīng)用程序連接到企業(yè)信息系統(tǒng)(EIS)的Java Connector Architecture (JCA)。 和Java消息服務(wù) (JMS)。
JMS的作用是什么?
JMS用于在分布式應(yīng)用程序之間以松耦合 , 異步 , 可伸縮和安全的方式傳遞消息。 應(yīng)用程序使用稱為目的地的消息導(dǎo)向中間件發(fā)送和接收消息。
異步意味著消息的發(fā)送者和接收者不需要同時(shí)與消息隊(duì)列交互。 因此,接收者可以在發(fā)送消息后的某個(gè)時(shí)間接收消息。
松散耦合是因?yàn)榘l(fā)送方對(duì)接收方一無所知,而接收方對(duì)發(fā)送方一無所知。
可擴(kuò)展性意味著系統(tǒng)的不同部分可以根據(jù)應(yīng)用程序負(fù)載以不同的速率增長。 因此,例如,如果站點(diǎn)上的活動(dòng)突然爆發(fā)導(dǎo)致跨消息傳遞中間件發(fā)送的消息急劇增加,則可以在接收方響應(yīng)或自動(dòng)縮放時(shí)將消息排隊(duì)。 這在系統(tǒng)中提供了魯棒性,否則該魯棒性將難以處理突然的負(fù)載,并且應(yīng)用程序?qū)㈤_始表現(xiàn)異常或完全停止工作。
何時(shí)使用JMS?
何時(shí)最佳使用JMS取決于用例,但通常情況下,它將至少屬于這些用例之一。
當(dāng)接收器關(guān)閉時(shí),應(yīng)用程序應(yīng)繼續(xù)運(yùn)行。 接收器可能損壞,應(yīng)用程序?qū)⒗^續(xù)其正常運(yùn)行。 這允許魯棒性。
術(shù)語
在談?wù)揓MS時(shí),需要了解一些有用的術(shù)語,這些術(shù)語可以幫助我們交流意圖。
目的地是消息發(fā)送的目的地 ,被稱為隊(duì)列或主題 。 通常在JMS中將其定義為字符串值。 應(yīng)該給目的地指定代表其功能的名稱。
JMS系統(tǒng)具有發(fā)布者或發(fā)送者 。 這是消息的起源,而訂戶或接收者是消息的終止。 這里使用的術(shù)語取決于消息傳遞系統(tǒng)的拓?fù)浣Y(jié)構(gòu),該拓?fù)浣Y(jié)構(gòu)可以是點(diǎn)對(duì)點(diǎn)或發(fā)布/訂閱 。
有消息 ,這些消息有一個(gè)有效負(fù)載,其中包含有用的信息,接收方將提取并處理這些有用的信息。 消息類型可以是文本,二進(jìn)制,流,對(duì)象或?qū)傩杂成洹?
點(diǎn)對(duì)點(diǎn)消息拓?fù)?/h2>
在點(diǎn)對(duì)點(diǎn)設(shè)置中,消息的來源稱為發(fā)件人,目的地稱為隊(duì)列。 在這里,消息被發(fā)送到單個(gè)目的地,并且接收者僅接收到消息的一個(gè)實(shí)例。 如果接收器關(guān)閉,則消息將保留在隊(duì)列中,直到接收器啟動(dòng)并再次運(yùn)行。
發(fā)布/訂閱消息拓?fù)?/h2>
在發(fā)布/訂閱設(shè)置中,消息的來源稱為發(fā)布者 ,目的地稱為主題 。 在這里,許多訂閱者可以訂閱一個(gè)主題,并且每個(gè)訂閱者都可以接收該消息的實(shí)例。 因此,一條消息發(fā)送給許多等待的訂戶 。 如果訂戶已關(guān)閉,則當(dāng)它重新啟動(dòng)并再次運(yùn)行時(shí),它將不會(huì)收到消息。
進(jìn)一步閱讀
如何學(xué)習(xí)以下Java EE技術(shù)的知識(shí):
- 上下文和依賴注入 (CDI)
- 企業(yè)Java Bean (EJB)
- JSP,JSP和表達(dá)語言
- RESTful Web服務(wù)
- Java持久性API
RESTful Web服務(wù)的JAX-RS
我最近發(fā)布了一個(gè)迷你系列博客,介紹了JAX-RS 。 他們討論:
- 如何管理bean驗(yàn)證失敗 ,
- 與消費(fèi)者和生產(chǎn)者合作 ,以及
- 如何創(chuàng)建JAX-RS資源實(shí)體 。
關(guān)于JAX-RS主題,有兩個(gè)深入的系列:
- 什么是JAX-RS批注? 深入研究開發(fā)REST端點(diǎn)時(shí)最常用的注釋。
- @Context注釋用于什么? 深入了解@Context批注的許多用途。
接下來是什么?
如果您是Java EE的新手,那么不知所措要繞過企業(yè)生態(tài)系統(tǒng)中的所有API。 這就是為什么我編寫并記錄了視頻培訓(xùn)課程Learning Java Enterprise Edition的原因 。 這是一個(gè)為期兩個(gè)小時(shí)的課程,向您介紹所有最重要的Java EE API。 關(guān)于如何使用Enterprise Java進(jìn)行編程的大量演示,代碼示例和練習(xí)任務(wù),將使您成為Java EE開發(fā)人員時(shí)能說得很透徹。
增進(jìn)知識(shí)
如果您想了解更多信息,那么有些課程將更深入地介紹每個(gè)API。 您將學(xué)習(xí)一門關(guān)于JAX-RS API的課程,通過學(xué)習(xí)如何構(gòu)造RESTful端點(diǎn)來提高自己的知識(shí)。 WebSocket API上有一門課程,您可以學(xué)習(xí)如何開發(fā)聊天應(yīng)用程序,而JSON上則有一門課程,您可以學(xué)習(xí)如何掌握JSON-Processing API課程。 即將到來的課程很多,所以為什么不現(xiàn)在就加入并讓您的Java EE事業(yè)發(fā)展呢?
翻譯自: https://www.javacodegeeks.com/2017/09/java-message-system-introduction.html
總結(jié)
以上是生活随笔為你收集整理的Java Message System简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 分析java死锁_Java死锁
- 下一篇: aspects_具有Aspects的Ja