JMS 的結(jié)構(gòu)在我們講述消息驅(qū)動(dòng)Beans之前,讓我們先來談?wù)凧MS(Java消息服務(wù))。我們知道現(xiàn)在有很多消息系統(tǒng),每一個(gè)都有他們自己的API,這些消息系統(tǒng)提供了事件交換和數(shù)據(jù)異步的服務(wù)。作為一個(gè)程序員,我可以給消息服務(wù)器發(fā)送一些信息然后繼續(xù)工作,而不必等待來自系統(tǒng)的響應(yīng)。JMS API描述了一個(gè)標(biāo)準(zhǔn)的方法來訪問幾乎所有的消息系統(tǒng),就像JDBC答應(yīng)我們使用相同的API訪問Oralce,Sybase和SQL Server 一樣。 如同可以調(diào)用異步服務(wù)那樣,我們從中獲得額外的好處是程序之間有一個(gè)寬松的耦合,發(fā)送請(qǐng)求的代碼和響應(yīng)請(qǐng)求的代碼是分離的。不同的客戶端把消息發(fā)送到同一個(gè)指定的目的地;然后,接收者(Receiver)從目的地分離出消息并顯示出來。下面讓我們快速的了解一些JMS API的基本概念:消息映射域
JMS消息消息映射域 消息系統(tǒng)有幾種運(yùn)行模式。JMS API 提供了不同的域,他對(duì)應(yīng)不同的模式。一個(gè)JMS提供者(PRovider)一個(gè)或多個(gè)域。兩個(gè)、多個(gè)公共域是點(diǎn)對(duì)點(diǎn)和發(fā)布/訂約。這兩個(gè)域有下面的概念:Destination:對(duì)象客戶端指定消息發(fā)送和接受的目的地ProdUCer:一個(gè)客戶端發(fā)送一個(gè)消息到一個(gè)目的地Consumer:一個(gè)客戶端從目的地接受消息點(diǎn)對(duì)點(diǎn)(PTP)一個(gè)點(diǎn)對(duì)點(diǎn)應(yīng)用有下面幾個(gè)特征: 一個(gè)PTP提供者是一個(gè)發(fā)送者一個(gè)PTP消費(fèi)者是一個(gè)接收者一個(gè)PTP目標(biāo)是一個(gè)隊(duì)列一個(gè)消息只能被一個(gè)接收者消費(fèi) 發(fā)布/訂閱(pub/sub)一個(gè)pub/sub應(yīng)用有以下特征:A pub/sub producer is publisherA pub/sub consumer is a subscriber A pub/sub destination is a topic A message may have multiple subscribers