JMS是一個由AS提供的Message服務(wù)。它能接受消息產(chǎn)生者(Message Provider)所發(fā)出的消息,并把消息轉(zhuǎn)發(fā)給消息消費者(Message CONsumer)。
JMS是一種與廠商無關(guān)的 API,用來訪問消息收發(fā)系統(tǒng)。它類似于 JDBC(Java Database Connectivity):這里,JDBC 是可以用來訪問許多不同關(guān)系數(shù)據(jù)庫的 API,而 JMS 則提供同樣與廠商無關(guān)的訪問方法,以訪問消息收發(fā)服務(wù)。許多廠商目前都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ,這只是幾個例子。 JMS 使您能夠通過消息收發(fā)服務(wù)(有時稱為消息中介程序或路由器)從一個 JMS 客戶機向另一個 JMS客戶機發(fā)送消息。消息是 JMS 中的一種類型對象,由兩部分組成:報頭和消息主體。報頭由路由信息以及有關(guān)該消息的元數(shù)據(jù)組成。消息主體則攜帶著應(yīng)用程序的數(shù)據(jù)或有效負載。根據(jù)有效負載的類型來劃分,可以將消息分為幾種類型,它們分別攜帶:簡單文本 (TextMessage)、可序列化的對象 (ObjectMessage)、屬性集合 (MapMessage)、字節(jié)流 (BytesMessage)、原始值流 (StreamMessage),還有無有效負載的消息 (Message)。
Java消息服務(wù)是一個在 Java標準化組織(JCP)內(nèi)開發(fā)的標準(代號JSR 914)。2001年6月25日,Java消息服務(wù)發(fā)布JMS 1.0.2b,2002年3月18日Java消息服務(wù)發(fā)布 1.1,統(tǒng)一了消息域。
●Session 接口(會話)
表示一個單線程的上下文,用于發(fā)送和接收消息。由于會話是單線程的,所以消息是連續(xù)的,就是說消息是按照發(fā)送的順序一個一個接收的。會話的好處是它支持事務(wù)。如果用戶選擇了事務(wù)支持,會話上下文將保存一組消息,直到事務(wù)被提交才發(fā)送這些消息。在提交事務(wù)之前,用戶可以使用回滾操作取消這些消息。一個會話允許用戶創(chuàng)建消息生產(chǎn)者來發(fā)送消息,創(chuàng)建消息消費者來接收消息。
●MessageConsumer 接口(消息消費者)
由會話創(chuàng)建的對象,用于接收發(fā)送到目標的消息。消費者可以同步地(阻塞模式),或異步(非阻塞)接收隊列和主題類型的消息。
●MessageProducer 接口(消息生產(chǎn)者)