<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 12, comments - 19, trackbacks - 0, articles - 23
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    JMS(Java消息服務(wù))是一個(gè)消息交換標(biāo)準(zhǔn),它允許使用J2EE應(yīng)用程序組件建立、發(fā)送、接收和讀取消息。它假設(shè)分布式通訊擁有自由(free)的連接、是可靠的(reliable)和異步的(asynchronous)。

      Exchange(交換)系統(tǒng)

      消息交換反映了程序組件或應(yīng)用程序之間的一種交互作用。消息交換系統(tǒng)是一種類似于下的系統(tǒng):一個(gè)相似系統(tǒng)的客戶端可以發(fā)送和接收任何其它客戶端的消息。每個(gè)客戶端都并入系統(tǒng)的代理中,它提供了建立、發(fā)送、接收和讀取消息的可能。

      交換系統(tǒng)使得分布式的交互操作成為可能。組件在目的地(Destination)發(fā)送消息,收件人也可以在相同的目的地中得到這個(gè)消息。發(fā)送者和收件人不一定是互相熟悉的。換句話說(shuō),它并沒(méi)有強(qiáng)迫發(fā)送者知道一些收件人的信息,也沒(méi)有強(qiáng)迫收件人知道某些發(fā)送者的信息。發(fā)送者和收件人只需要知道消息的格式以及要到達(dá)的目的地。在這種情形下,上述的系統(tǒng)不同于與它緊密相連的一些技術(shù),例如遠(yuǎn)程方法調(diào)用(RMI),它只要求開(kāi)發(fā)人員了解RMI中的一些方法。

      消息傳遞系統(tǒng)

      消息傳遞系統(tǒng)是一種分布式的系統(tǒng),是基于系統(tǒng)組件之間的異步消息交換。面向消息的中間件(Message-Oriented Middleware,MOM)就是這種產(chǎn)品,消息傳遞系統(tǒng)是在它的原理上建立的。

      消息傳遞系統(tǒng)應(yīng)用軟件不會(huì)直接地通訊(這與傳統(tǒng)的系統(tǒng)(基于RMI的)形成鮮明的對(duì)照),而需要依賴MOM的幫助。如果系統(tǒng)的某個(gè)組件希望給另一個(gè)組件發(fā)送消息,它將把給定的消息發(fā)送給MOM,接著MOM把該消息發(fā)送給收件人。


      與傳統(tǒng)的基于RMI構(gòu)建的系統(tǒng)相比,它有以下優(yōu)點(diǎn):

      · 發(fā)送消息的應(yīng)用程序不需要期待回應(yīng),可以繼續(xù)執(zhí)行。

      · 沒(méi)有強(qiáng)迫發(fā)送消息的應(yīng)用程序和特定消息的收件人在某個(gè)特定的時(shí)刻是激活的。如果消息的收件人不是激活的,MOM保證收件人一旦激活就立即收到該消息。

      · 系統(tǒng)組件沒(méi)有直接地彼此相連。它們被分離開(kāi)了,這就是在運(yùn)行時(shí)刻能把組件從一個(gè)主機(jī)傳輸?shù)搅硪粋€(gè)、卻不會(huì)中斷系統(tǒng)可用性的原因。

      消息交換模型:點(diǎn)對(duì)點(diǎn)模型和發(fā)表-預(yù)訂模型

      目前有兩種“基本的”消息交換模型:點(diǎn)對(duì)點(diǎn)模型和發(fā)表-預(yù)訂(pub-sub)模型。點(diǎn)對(duì)點(diǎn)模型應(yīng)用于一個(gè)或多個(gè)組件(發(fā)送者)僅僅給一個(gè)組件收件人(接收者)發(fā)送消息的情形。這種模型是基于消息隊(duì)列概念的:發(fā)送者把消息發(fā)送到隊(duì)列中,接收者從該隊(duì)列中讀取消息。在點(diǎn)對(duì)點(diǎn)模型中,相同的隊(duì)列上可能存在多個(gè)接收者,但是MOM只給其中一個(gè)傳遞消息。給哪一個(gè)傳遞消息依賴于MOM的實(shí)現(xiàn)(implementation)。

      發(fā)表-預(yù)訂模型應(yīng)用于一個(gè)或多個(gè)組件(發(fā)表者)給一個(gè)或多個(gè)組件收件人(預(yù)訂者)發(fā)送消息的情形。這種特定的模型是基于消息主題(message topic)概念的:發(fā)表者把消息發(fā)送到某個(gè)主題中,而該特定主題的預(yù)訂者接收這些消息。

      發(fā)表-預(yù)訂模型看起來(lái)更加“優(yōu)雅”,但是很多發(fā)表-預(yù)訂模型不能保證消息按照發(fā)送的次序傳遞(它與點(diǎn)對(duì)點(diǎn)模型相反,點(diǎn)對(duì)點(diǎn)隊(duì)列實(shí)現(xiàn)了FIFO(先進(jìn)先出)原理)。因此,消息的次序很重要(或者為了同步需要使用消息的頭和屬性部分)的時(shí)候,就應(yīng)該避免采用發(fā)表-預(yù)訂模型。

      Java消息服務(wù)(JMS)是使用面向消息中間件的一套Java API,它允許你的應(yīng)用程序建立、發(fā)送、接收和讀取消息。這組程序集位于J2EE程序包結(jié)構(gòu)樹(shù)上的javax.jms程序包中。JMS在很多MOM產(chǎn)品中得到了實(shí)現(xiàn),其中iPlanet Message Queue、 IBM MQSeries、Progress Software SonicMQ、BEA WebLogic Server、Prism Technologies OpenFusion等最有名氣,也存在一些免費(fèi)的實(shí)現(xiàn)。

      JMS同時(shí)支持消息交換的兩種“基本的”模型。但是,其說(shuō)明(specification)并沒(méi)有要求廠商同時(shí)實(shí)現(xiàn)兩種模型,盡管大多數(shù)JMS產(chǎn)品實(shí)現(xiàn)了點(diǎn)對(duì)點(diǎn)和發(fā)表-預(yù)訂模型。

      JMS應(yīng)用程序

      JMS應(yīng)用程序的主要部分是:

      · 產(chǎn)生連接的部分和目的地

      · 連接

      · 對(duì)話

      · 產(chǎn)生消息的部分

      · 使用消息的部分

      · 消息

      產(chǎn)生連接的部分(ConnectionFactory)是負(fù)責(zé)建立JMS連接的對(duì)象。每個(gè)ConnectionFactory都是QueueConnectionFactory或TopicConnectionFactory的一個(gè)副本(copy)。MOM管理器建立特定的對(duì)象,并把它與JNDI樹(shù)關(guān)聯(lián)起來(lái),這樣JMS客戶端就能夠使用標(biāo)準(zhǔn)的JNDI查找表得到ConnectionFactory的入口。在點(diǎn)對(duì)點(diǎn)的模型中,它使用了javax.jms.QueueConnectionFactory;在發(fā)表-預(yù)訂模型中,它使用的是javax.jms.TopicConnectionFactory。

      目的地(Destination)——它是隊(duì)列或主題,這依賴于我們使用了下面哪種模型:javax.jms.Queue或javax.jms.Topic。

      連接(Connection)——它可能是客戶端和服務(wù)應(yīng)用之間的開(kāi)放的TCP/IP。它可以被用于建立一個(gè)或少量的對(duì)話。在你的應(yīng)用程序能夠接收消息前,你必須調(diào)用start()方法。為了暫停發(fā)送消息,你需要調(diào)用stop()。

      對(duì)話(Session)——在JMS連接的幫助下建立的對(duì)象,被客戶端用作發(fā)送和接收消息。

      產(chǎn)生消息的部分(MessageProducer)——對(duì)話建立的對(duì)象,被用于在目的地中發(fā)送消息。

      使用消息的部分(MessageConsumer)——對(duì)話建立的對(duì)象,用于接收消息。為了同步接收消息,需要使用receive()方法。對(duì)于異步的情形,使用MessageListener和唯一的方法——onMessage()。在該方法中,在定義的消息到達(dá)后應(yīng)該執(zhí)行一定的操作。

      消息(Message)——消息本身。JMS消息由三個(gè)部分組成:

      · 消息頭

      · 屬性(不是必要的)

      · 消息體(不是必要的)

      本文沒(méi)有解釋更多的細(xì)節(jié)信息,你可以在官方文檔中找到具體的細(xì)節(jié)。
    主站蜘蛛池模板: 欧美激情综合亚洲一二区| 亚洲黄色高清视频| 青青免费在线视频| 天天干在线免费视频| 亚洲人成网国产最新在线| 在线精品一卡乱码免费| 亚洲丝袜中文字幕| 男人的好免费观看在线视频| 中文字幕在线观看亚洲视频| 无码国产精品久久一区免费| 亚洲国产欧美日韩精品一区二区三区 | 日韩亚洲国产综合高清| 成人免费网站在线观看| 亚洲成a人片在线不卡一二三区| 国产精品国产自线拍免费软件| 美女视频黄频a免费观看| 亚洲欧洲中文日韩av乱码| 中国一级毛片免费看视频| 亚洲精品福利视频| 亚洲精品免费网站| 亚洲国产精品无码久久久秋霞1| 啊灬啊灬别停啊灬用力啊免费看| 精品成人一区二区三区免费视频| 亚洲综合区小说区激情区| 久久这里只精品国产免费10| 亚洲欧洲精品在线| 国产在线观看免费视频播放器 | 亚洲色大成网站www永久男同| 香蕉视频在线观看免费国产婷婷| 美女尿口扒开图片免费 | 亚洲卡一卡二卡乱码新区| 免费欧洲美女牲交视频| a级毛片毛片免费观看久潮| 亚洲精品视频专区| 又黄又爽无遮挡免费视频| 黄色免费在线网站| 亚洲女子高潮不断爆白浆| 亚洲精品二区国产综合野狼| 国产91免费视频| 免费看一级毛片在线观看精品视频| 亚洲精品乱码久久久久久中文字幕 |