Java消息服务
Java消息服務(wù)(Java Message Service,JMS)應(yīng)用程序接口是一個(gè)Java平臺(tái)中關(guān)于面向消息中間件(MOM)的API,用于在兩個(gè)應(yīng)用程序之間,或分布式系統(tǒng)中發(fā)送消息,進(jìn)行異步通信。
Java消息服務(wù)是一個(gè)與具體平臺(tái)無(wú)關(guān)的API,絕大多數(shù)MOM提供商都對(duì)JMS提供支持。
?
消息中間件的傳遞模式
?????????????????? 消息中間件一般有兩種傳遞模型:點(diǎn)對(duì)點(diǎn)模型(PTP)和發(fā)布-訂閱模型(Pub/Sub)[2]。
??????????? 點(diǎn)對(duì)點(diǎn)模型(PTP)
點(diǎn)對(duì)點(diǎn)模型用于消息生產(chǎn)者和消息消費(fèi)者之間點(diǎn)到點(diǎn)的通信。消息生產(chǎn)者將消息發(fā)動(dòng)到由某個(gè)名字標(biāo)識(shí) 的特定消費(fèi)者。
??????? 這個(gè)名字實(shí)際上對(duì)應(yīng)于消息服務(wù)中的一個(gè)隊(duì)列(Queue),在消息傳動(dòng)給消費(fèi)者之前它被存儲(chǔ)在這個(gè)隊(duì)列中。
??????? 隊(duì)列可以是持久的,以保證在消息 服務(wù)出現(xiàn)故障時(shí)仍然能夠傳遞消息。
?????? 發(fā)布-訂閱模型(Pub/Sub)
發(fā)布-訂閱模型用稱(chēng)為主題(topic)的內(nèi)容分層結(jié)構(gòu)代替了PTP模型中的惟一目的地,發(fā)送應(yīng) 用程序發(fā)布自己的消息,指出消息描述的是有關(guān)分層結(jié)構(gòu)中的一個(gè)主題的信息。希望接收這些消息的應(yīng)用程序訂閱了這個(gè)主題。訂閱包含子主題的分層結(jié)構(gòu)中的主題 的訂閱者可以接收該主題和其子主題發(fā)表的所有消息。
下圖展示了發(fā)布和訂閱模型:
?? 多個(gè)應(yīng)用程序可以就一個(gè)主題發(fā)布和訂閱消息,而應(yīng)用程序?qū)ζ渌巳匀皇悄涿摹OM 起著代理(broker)的作用,將一個(gè)主題已發(fā)表的消息路由給該主題的所有訂閱者。
消息中間件產(chǎn)品與JMS
由于沒(méi)有統(tǒng)一的規(guī)范和標(biāo)準(zhǔn),基于消息中間件的應(yīng)用不可移植,不同的消息中間件也不能互操作,這大大阻礙了消息中間件的發(fā)展。 Java Message Service(JMS, Java消息服務(wù))是SUN及其伙伴公司提出的旨在統(tǒng)一各種消息中間件系統(tǒng)接口的規(guī)范。它定義了一套通用的接口和相關(guān)語(yǔ)義,提供了諸如持久、驗(yàn)證和事務(wù)的消息服務(wù),它最主要的目的是允許Java應(yīng)用程序訪問(wèn)現(xiàn)有的消息中間件。JMS規(guī)范沒(méi)有指定在消息節(jié)點(diǎn)間所使用的通訊底層協(xié)議,來(lái)保證應(yīng)用開(kāi)發(fā)人員不用與其細(xì)節(jié)打交道,一個(gè)特定的JMS實(shí)現(xiàn)可能提供基于TCP/IP、HTTP、UDP或者其它的協(xié)議。
目前許多廠商采用并實(shí)現(xiàn)了JMS API,現(xiàn)在,JMS產(chǎn)品能夠?yàn)槠髽I(yè)提供一套完整的消息傳遞功能,下面是一些比較流行的JMS商業(yè)軟件和開(kāi)源產(chǎn)品。
1.IBM MQSeries
IBM MQ系列產(chǎn)品提供的服務(wù)使得應(yīng)用程序可以使用消息隊(duì)列進(jìn)行相互交流,通過(guò)一系列基于Java的API,提供了MQSeries在Java中應(yīng)用開(kāi)發(fā)的方法。它支持點(diǎn)到點(diǎn)和發(fā)布/訂閱兩種消息模式,在基本消息服務(wù)的基礎(chǔ)上增加了結(jié)構(gòu)化消息類(lèi),通過(guò)工作單元提供數(shù)據(jù)整合等內(nèi)容。
2.WebLogic
WebLogic是BEA公司實(shí)現(xiàn)的基于工業(yè)標(biāo)準(zhǔn)的J2EE應(yīng)用服務(wù)器,支持大多數(shù)企業(yè)級(jí)JavaAPI,它完全兼容JMS規(guī)范,支持點(diǎn)到點(diǎn)和發(fā)布/訂閱消息模式,它具有以下一些特點(diǎn):
1) 通過(guò)使用管理控制臺(tái)設(shè)置JMS配置信息;
2) 支持消息的多點(diǎn)廣播;
3) 支持持久消息存儲(chǔ)的文件和數(shù)據(jù)庫(kù);
4) 支持XML消息,動(dòng)態(tài)創(chuàng)建持久隊(duì)列和主題。
3.SonicMQ
SonicMQ是Progress公司實(shí)現(xiàn)的JMS產(chǎn)品。除了提供基本的消息驅(qū)動(dòng)服務(wù)之外,SonicMQ也提供了很多額外的企業(yè)級(jí)應(yīng)用開(kāi)發(fā)工具包,它具有以下一些基本特征:
1) 提供JMS規(guī)范的完全實(shí)現(xiàn),支持點(diǎn)到點(diǎn)消息模式和發(fā)布/訂閱消息模式;
2) 支持層次安全管理;
3) 確保消息在Internet上的持久發(fā)送;
4) 動(dòng)態(tài)路由構(gòu)架(DRA)使企業(yè)能夠通過(guò)單個(gè)消息服務(wù)器動(dòng)態(tài)的交換消息;
5) 支持消息服務(wù)器的集群。
4.Active MQ
Active MQ是一個(gè)基于Apcache 2.0 licenced發(fā)布,開(kāi)放源碼的JMS產(chǎn)品。其特點(diǎn)為:
1) 提供點(diǎn)到點(diǎn)消息模式和發(fā)布/訂閱消息模式;
2) 支持JBoss、Geronimo等開(kāi)源應(yīng)用服務(wù)器,支持Spring框架的消息驅(qū)動(dòng);
3) 新增了一個(gè)P2P傳輸層,可以用于創(chuàng)建可靠的P2P JMS網(wǎng)絡(luò)連接;
4) 擁有消息持久化、事務(wù)、集群支持等JMS基礎(chǔ)設(shè)施服務(wù)。
5.OpenJMS
OpenJMS是一個(gè)開(kāi)源的JMS規(guī)范的實(shí)現(xiàn),它包含以下幾個(gè)特征:
1) 它支持點(diǎn)到點(diǎn)模型和發(fā)布/訂閱模型;
2) 支持同步與異步消息發(fā)送;
3) 可視化管理界面,支持Applet;
4) 能夠與Jakarta Tomcat這樣的Servlet容器結(jié)合;
5) 支持RMI、TCP、HTTP與SSL協(xié)議。
轉(zhuǎn)載于:https://www.cnblogs.com/pan2011/p/3724451.html
總結(jié)
- 上一篇: CentOs6.5下安装vim7.4
- 下一篇: java美元兑换,(Java实现) 美元