Java消息服務

Java消息服務Java Message ServiceJMS應用程序接口是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通訊。php

Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。數據庫

 

消息中間件的傳遞模式
                   消息中間件通常有兩種傳遞模型:點對點模型(PTP)和發佈-訂閱模型(Pub/Sub)[2]。
            點對點模型(PTP)安全

點對點模型用於消息生產者和消息消費者之間點到點的通訊。消息生產者將消息發動到由某個名字標識 的特定消費者。服務器

        這個名字實際上對應於消息服務中的一個隊列(Queue),在消息傳動給消費者以前它被存儲在這個隊列中。網絡

        隊列能夠是持久的,以保證在消息 服務出現故障時仍然可以傳遞消息。
       發佈-訂閱模型(Pub/Sub)
發佈-訂閱模型用稱爲主題(topic)的內容分層結構代替了PTP模型中的唯一目的地,發送應 用程序發佈本身的消息,指出消息描述的是有關分層結構中的一個主題的信息。但願接收這些消息的應用程序訂閱了這個主題。訂閱包含子主題的分層結構中的主題 的訂閱者能夠接收該主題和其子主題發表的全部消息。
下圖展現了發佈和訂閱模型:

   多個應用程序能夠就一個主題發佈和訂閱消息,而應用程序對其餘人仍然是匿名的。MOM 起着代理(broker)的做用,將一個主題已發表的消息路由給該主題的全部訂閱者。框架

消息中間件產品與JMS異步

因爲沒有統一的規範和標準,基於消息中間件的應用不可移植,不一樣的消息中間件也不能互操做,這大大阻礙了消息中間件的發展。 Java Message Service(JMS, Java消息服務)是SUN及其夥伴公司提出的旨在統一各類消息中間件系統接口的規範。它定義了一套通用的接口和相關語義,提供了諸如持久、驗證和事務的消息服務,它最主要的目的是容許Java應用程序訪問現有的消息中間件。JMS規範沒有指定在消息節點間所使用的通信底層協議,來保證應用開發人員不用與其細節打交道,一個特定的JMS實現可能提供基於TCP/IP、HTTP、UDP或者其它的協議。分佈式

目前許多廠商採用並實現了JMS API,如今,JMS產品可以爲企業提供一套完整的消息傳遞功能,下面是一些比較流行的JMS商業軟件和開源產品。工具

1.IBM MQSeries開發工具

IBM MQ系列產品提供的服務使得應用程序可使用消息隊列進行相互交流,經過一系列基於Java的API,提供了MQSeries在Java中應用開發的方法。它支持點到點和發佈/訂閱兩種消息模式,在基本消息服務的基礎上增長告終構化消息類,經過工做單元提供數據整合等內容。

2.WebLogic

WebLogic是BEA公司實現的基於工業標準的J2EE應用服務器,支持大多數企業級JavaAPI,它徹底兼容JMS規範,支持點到點和發佈/訂閱消息模式,它具備如下一些特色:

1) 經過使用管理控制檯設置JMS配置信息;

2) 支持消息的多點廣播;

3) 支持持久消息存儲的文件和數據庫;

4) 支持XML消息,動態建立持久隊列和主題。

3.SonicMQ

SonicMQ是Progress公司實現的JMS產品。除了提供基本的消息驅動服務以外,SonicMQ也提供了不少額外的企業級應用開發工具包,它具備如下一些基本特徵:

1) 提供JMS規範的徹底實現,支持點到點消息模式和發佈/訂閱消息模式;

2) 支持層次安全管理;

3) 確保消息在Internet上的持久發送;

4) 動態路由構架(DRA)使企業可以經過單個消息服務器動態的交換消息;

5) 支持消息服務器的集羣。

4.Active MQ

Active MQ是一個基於Apcache 2.0 licenced發佈,開放源碼的JMS產品。其特色爲:

1) 提供點到點消息模式和發佈/訂閱消息模式;

2) 支持JBoss、Geronimo等開源應用服務器,支持Spring框架的消息驅動;

3) 新增了一個P2P傳輸層,能夠用於建立可靠的P2P JMS網絡鏈接;

4) 擁有消息持久化、事務、集羣支持等JMS基礎設施服務。

5.OpenJMS

OpenJMS是一個開源的JMS規範的實現,它包含如下幾個特徵:

1) 它支持點到點模型和發佈/訂閱模型;

2) 支持同步與異步消息發送;

3) 可視化管理界面,支持Applet;

4) 可以與Jakarta Tomcat這樣的Servlet容器結合;

5) 支持RMI、TCP、HTTP與SSL協議。

相關文章
相關標籤/搜索