久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

JMS

來(lái)自站長(zhǎng)百科
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

JMS(Java Message Service),即Java消息服務(wù),是一組Java應(yīng)用程序接口(Java API),它提供創(chuàng)建、發(fā)送、接收、讀取消息的服務(wù)。由Sun公司和它的合作伙伴設(shè)計(jì)的JMS API定義了一組公共的應(yīng)用程序接口和相應(yīng)語(yǔ)法,使得Java程序能夠和其他消息組件進(jìn)行通信。

概述[ ]

JMS是一種與廠商無(wú)關(guān)的API,用來(lái)訪問(wèn)消息收發(fā)系統(tǒng)。它類似于JDBC (Java Database Connectivity):這里,JDBC是可以用來(lái)訪問(wèn)許多不同關(guān)系數(shù)據(jù)庫(kù)的API,而JMS則提供同樣與廠商無(wú)關(guān)的訪問(wèn)方法,以訪問(wèn)消息收發(fā)服務(wù)。許多廠商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的Weblogic JMS service和Progress的SonicMQ。

JMS使您能夠通過(guò)消息收發(fā)服務(wù)(有時(shí)稱為消息中介程序或路由器)從一個(gè)JMS客戶機(jī)向另一個(gè)JML客戶機(jī)發(fā)送消息。消息是JMS中的一種類型對(duì)象,由兩部分組成:報(bào)頭和消息主體。報(bào)頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。

消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負(fù)載。根據(jù)有效負(fù)載的類型來(lái)劃分,可以將消息分為幾種類型,它們分別攜帶:簡(jiǎn)單文本 (TextMessage)、可序列化的對(duì)象 (ObjectMessage)、屬性集合 (MapMessage)、字節(jié)流 (BytesMessage)、原始值流 (StreamMessage),還有無(wú)有效負(fù)載的消息 (Message)。

消息收發(fā)系統(tǒng)是異步的,也就是說(shuō),JMS 客戶機(jī)可以發(fā)送消息而不必等待回應(yīng)。比較可知,這完全不同于基于RPC的基于遠(yuǎn)程過(guò)程的系統(tǒng),如EJB 1.1、CORBA和Java RMI的引用實(shí)現(xiàn)。在 RPC 中,客戶機(jī)調(diào)用服務(wù)器上某個(gè)分布式對(duì)象的一個(gè)方法。在方法調(diào)用返回之前,該客戶機(jī)被阻塞;該客戶機(jī)在可以執(zhí)行下一條指令之前,必須等待方法調(diào)用結(jié)束。

在 JMS 中,客戶機(jī)將消息發(fā)送給一個(gè)虛擬通道(主題或隊(duì)列),而其它 JMS 客戶機(jī)則預(yù)訂或監(jiān)聽(tīng)這個(gè)虛擬通道。當(dāng) JMS 客戶機(jī)發(fā)送消息時(shí),它并不等待回應(yīng)。它執(zhí)行發(fā)送操作,然后繼續(xù)執(zhí)行下一條指令。消息可能最終轉(zhuǎn)發(fā)到一個(gè)或許多個(gè)客戶機(jī),這些客戶機(jī)都不需要作出回應(yīng)。

JMS的通用接口集合以異步方式發(fā)送或接收消息。異步方式接收消息顯然是使用間斷網(wǎng)絡(luò)連接的客戶機(jī),諸如移動(dòng)電話和PDA的最好的選擇。另外, JMS采用一種寬松結(jié)合方式整合企業(yè)系統(tǒng)的方法,其主要的目的就是創(chuàng)建能夠使用跨平臺(tái)數(shù)據(jù)信息的、可移植的企業(yè)級(jí)應(yīng)用程序,而把開(kāi)發(fā)人力解放出來(lái)。

兩種消息模型[ ]

Java消息服務(wù)支持兩種消息模型:Point-to-Point消息(P2P)和發(fā)布訂閱消息(Publish Subscribe messaging,簡(jiǎn)稱Pub/Sub)。JMS規(guī)范并不要求供應(yīng)商同時(shí)支持這兩種消息模型,但開(kāi)發(fā)者應(yīng)該熟悉這兩種消息模型的優(yōu)勢(shì)與缺點(diǎn)。

P2P消息模型[ ]

P2P消息模型是在點(diǎn)對(duì)點(diǎn)之間傳遞消息時(shí)使用。如果應(yīng)用程序開(kāi)發(fā)者希望每一條消息都能夠被處理,那么應(yīng)該使用P2P消息模型。與Pub/Sub消息模型不同,P2P消息總是能夠被傳送到指定的位置。

Pub/Sub模型[ ]

Pub/Sub模型在一到多的消息廣播時(shí)使用。如果一定程度的消息傳遞的不可靠性可以被接受的話,那么應(yīng)用程序開(kāi)發(fā)者也可以使用Pub/Sub消息模型。換句話說(shuō),它適用于所有的消息消費(fèi)程序并不要求能夠收到所有的信息或者消息消費(fèi)程序并不想接收到任何消息的情況。

JMS應(yīng)用程序接口[ ]

  • ConnectionFactory 接口(連接工廠)

用戶用來(lái)創(chuàng)建到JMS提供者的連接的被管對(duì)象。JMS客戶通過(guò)可移植的接口訪問(wèn)連接,這樣當(dāng)下層的實(shí)現(xiàn)改變時(shí),代碼不需要進(jìn)行修改。管理員在JNDI名字空間中配置連接工廠,這樣,JMS客戶才能夠查找到它們。根據(jù)消息類型的不同,用戶將使用隊(duì)列連接工廠,或者主題連接工廠。

  • Connection 接口(連接)

連接代表了應(yīng)用程序和消息服務(wù)器之間的通信鏈路。在獲得了連接工廠后,就可以創(chuàng)建一個(gè)與JMS提供者的連接。根據(jù)不同的連接類型,連接允許用戶創(chuàng)建會(huì)話,以發(fā)送和接收隊(duì)列和主題到目標(biāo)。

  • Destination 接口(目標(biāo))

目標(biāo)是一個(gè)包裝了消息目標(biāo)標(biāo)識(shí)符的被管對(duì)象,消息目標(biāo)是指消息發(fā)布和接收的地點(diǎn),或者是隊(duì)列,或者是主題。JMS管理員創(chuàng)建這些對(duì)象,然后用戶通過(guò)JNDI發(fā)現(xiàn)它們。和連接工廠一樣,管理員可以創(chuàng)建兩種類型的目標(biāo),P2P模型的隊(duì)列,以及Pub/Sub模型的主題。

  • MessageConsumer 接口(消息消費(fèi)者)

由會(huì)話創(chuàng)建的對(duì)象,用于接收發(fā)送到目標(biāo)的消息。消費(fèi)者可以同步地(阻塞模式),或異步(非阻塞)接收隊(duì)列和主題類型的消息。

  • MessageProducer 接口(消息生產(chǎn)者)

由會(huì)話創(chuàng)建的對(duì)象,用于發(fā)送消息到目標(biāo)。用戶可以創(chuàng)建某個(gè)目標(biāo)的發(fā)送者,也可以創(chuàng)建一個(gè)通用的發(fā)送者,在發(fā)送消息時(shí)指定目標(biāo)。

  • Message 接口(消息)

是在消費(fèi)者和生產(chǎn)者之間傳送的對(duì)象,也就是說(shuō)從一個(gè)應(yīng)用程序創(chuàng)送到另一個(gè)應(yīng)用程序。一個(gè)消息有三個(gè)主要部分:

消息頭(必須):包含用于識(shí)別和為消息尋找路由的操作設(shè)置。

一組消息屬性(可選):包含額外的屬性,支持其他提供者和用戶的兼容??梢詣?chuàng)建定制的字段和過(guò)濾器(消息選擇器)。

一個(gè)消息體(可選):允許用戶創(chuàng)建五種類型的消息(文本消息,映射消息,字節(jié)消息,流消息和對(duì)象消息)。

消息接口非常靈活,并提供了許多方式來(lái)定制消息的內(nèi)容。

  • Session 接口(會(huì)話)

表示一個(gè)單線程的上下文,用于發(fā)送和接收消息。由于會(huì)話是單線程的,所以消息是連續(xù)的,就是說(shuō)消息是按照發(fā)送的順序一個(gè)一個(gè)接收的。會(huì)話的好處是它支持事務(wù)。如果用戶選擇了事務(wù)支持,會(huì)話上下文將保存一組消息,直到事務(wù)被提交才發(fā)送這些消息。

在提交事務(wù)之前,用戶可以使用回滾操作取消這些消息。一個(gè)會(huì)話允許用戶創(chuàng)建消息生產(chǎn)者來(lái)發(fā)送消息,創(chuàng)建消息消費(fèi)者來(lái)接收消息。

JMS的目標(biāo)[ ]

  • 定義一組消息公用概念和實(shí)用工具。
  • 最少化程序員使用消息時(shí)必須學(xué)習(xí)的概念。
  • 最大化消息應(yīng)用程序的可移植性。
  • 最小化實(shí)現(xiàn)一個(gè)提供者所需的工作量。
  • 為點(diǎn)對(duì)點(diǎn)和 pub/sub 域 提供客戶機(jī)接口?!坝颉笔怯糜谠谇懊嬗懻摰南⒛P偷?JMS 術(shù)語(yǔ)。(注意:提供者不需要實(shí)現(xiàn)兩個(gè)域。)

相關(guān)條目[ ]

參考資源[ ]