jms的標準或協議。它通常用於企業應用程序的消息傳遞。主要有話題消息(1到多)和隊列消息(1到1)。Activemq是壹個jms實現,由apache生產。
jboss還有其他實現。
MQ簡介:
MQ的全稱是消息隊列,消息隊列(MQ)是壹種應用程序到應用程序的通信方式。應用程序通過在隊列內外為應用程序寫入和檢索數據(消息)來進行通信,而不需要專門的連接來鏈接它們。消息傳遞意味著程序通過在消息中發送數據來相互通信,而不是通過直接調用,直接調用通常用於遠程過程調用等技術。排隊意味著應用程序通過隊列進行通信。隊列的使用消除了接收和發送應用程序同時執行的要求。比較成熟的MQ產品之壹是MQ。
MQ功能:
MQ的消費者-生產者模型的典型代表,壹端不停地將消息寫入消息隊列,另壹端可以讀取或訂閱隊列中的消息。MQ類似於JMS,但區別在於JMS是SUN JAVA消息中間件服務的標準和API定義,而MQ遵循AMQP協議的具體實現和產品。
使用場景:
在項目中,壹些不需要立即返回的耗時操作被提取出來異步處理,大大節省了服務器的請求響應時間,從而提高了系統的吞吐量。
JMS簡介:
JMS (Java消息服務)應用程序接口是Java平臺上關於消息中間件(MOM)的API,用於在兩個應用程序之間或分布式系統中發送消息以進行異步通信。Java消息服務是壹個獨立於平臺的API,大多數MOM提供者都支持JMS。
定義:
JMS(Java Messaging Service)是關於Java平臺上面向消息的中間件(MOM)的技術規範。它促進了消息傳遞系統中Java應用程序之間的消息交換,並通過提供用於生成、發送和接收消息的標準接口來簡化企業應用程序的開發,並將它們轉換為Java消息服務。
簡介:
JMS是壹個獨立於供應商的API,用於訪問消息傳遞系統消息。它類似於JDBC(Java):在這裏,JDBC是壹個API,可以用來訪問許多不同的關系數據庫,而JMS提供了相同的獨立於供應商的訪問方法來訪問消息服務。許多供應商目前都支持JMS,包括IBM的MQSeries、BEA的Weblogic JMS服務和Progress的SonicMQ,這裏僅舉幾例。JMS使您能夠通過消息服務(有時稱為消息代理或路由器)將消息從壹個JMS客戶機發送到另壹個客戶機。消息是JMS中的壹種對象類型,由兩部分組成:消息頭和消息體。報頭由路由信息和關於消息的元數據組成。消息體攜帶應用程序的數據或有效載荷。根據有效載荷的類型,消息可以分為幾種類型,分別攜帶:簡單的TextMessage,可序列化的object(),屬性集(MapMessage),字節流(),原始值流(),無有效載荷的消息。
JMS和MQ之間的關系:
JMS是提供消息服務的技術規範,它規定了提供消息服務的整個過程中的所有數據結構和交互過程。另壹方面,MQ是壹種消息隊列服務,是面向消息的中間件(MOM)的最終實現,是真正的服務提供者。MQ的實現可以基於JMS或其他規範或標準。
支持JMS的開源MQ:
目前,ActiveMQ是最受歡迎的選擇。
ActiveMQ是Apache生產的最流行、最強大的開源消息總線。ActiveMQ是JMS提供者實現,完全支持JMS1.1和J2EE 1.4規範。盡管JMS規範已經發布了很長時間,但JMS在今天的J2EE應用程序中仍然扮演著特殊的角色。
主要特點:
1.用多種語言和協議編寫客戶端。語言:Java,C,C,C #,Ruby,Perl,Python,PHP。應用協議:OpenWire,Stomp REST,XMPP,AMQP。
2.完全支持JMS1.1和J2EE 1.4規範(持久性、XA消息、事務)。
3.對Spring的支持,使用Spring可以很容易地將ActiveMQ嵌入到系統中,並且它還支持Spring2.0的特性。
4.通過了常見J2EE服務器(如Geronimo、JBoss 4、Glassfish、WebLogic)的測試,通過JCA1.5資源適配器的配置,ActiveMQ可以自動部署到任何兼容J2EE 1.4的商用服務器上。
5.支持多種傳輸協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA。
6.通過JDBC和日誌支持高速消息持久性。
7.通過設計確保高性能集群、客戶端-服務器、點對點。
8.支持Ajax
9.支持與安訊士的集成
10.您可以輕松地調用嵌入式JMS提供者進行測試。
11.ActiveMQ很快;壹般比jbossMQ快10倍。
優點:它是壹個快速的開源消息組件(框架),支持集群、對等網絡、自動檢測、TCP、SSL、廣播、持久化、XA和J2EE1.4容器,支持大多數跨語言客戶端上的輕量級容器和Java虛擬機。消息異步接收,降低了軟件多系統集成的耦合度。消息的可靠接收保證了消息在中間件中的可靠存儲,多個消息也可以形成原子事務。
缺點:ActiveMQ默認配置性能低,需要優化,但配置文件復雜,ActiveMQ本身不提供管理工具;樣本代碼少;主頁上的文檔看起來很全面,但缺乏有效的組織方法。文檔只是碎片化的,用戶很難由淺入深的理解。二是文件整體專業性太強。在研究階段,我們可以通過查看郵件列表、閱讀Javadoc和分析源代碼來了解。