一、簡介 :
? ? ? ? ? ? ?企業(yè)消息軟件從80年代起就存在,它不只是一種應用間消息傳遞風格,也是一種集成風格。因此,消息傳遞可以滿足應用間的通知和互相操作。但是開源的解決方案是到最近10年才出現(xiàn)的。Apache ActiveMQ就是其中一種。它使應用間能以異步,松耦合方式交流。本章將向您介紹ActiveMQ。
1、activeMQ 特性:
? ? ? ? ? ? ActiveMQ是Apache軟件基金下的一個開源軟件,它遵循JMS1.1規(guī)范(Java Message Service),是消息驅(qū)動中間件軟件(MOM)。它為企業(yè)消息傳遞提供高可用,出色性能,可擴展,穩(wěn)定和安全保障。ActiveMQ使用Apache許可協(xié)議。因此,任何人都可以使用和修改它而不必反饋任何改變。這對于商業(yè)上將ActiveMQ用在重要用途的人尤為關鍵。MOM的工作是在分布式的各應用之間調(diào)度事件和消息,使之到達指定的接收者。所以高可用,高性能,高可擴展性尤為關鍵。
? ? ? ? ? ? ActiveMQ的目標是在盡可能多的平臺和語言上提供一個標準的,消息驅(qū)動的應用集成。ActiveMQ實現(xiàn)JMS規(guī)范并在此之上提供大量額外的特性。
下面是一個高層次的特性列表 :
? ? ? ? ? ? 遵循JMS規(guī)范 ----理解ActiveMQ的起始點是明白ActiveMQ的各種特性是JMS1.1規(guī)范的實現(xiàn)。本章后面將討論JMS規(guī)范提供的好處和保證。它們包括同步和異步消息傳遞,一次和只有一次的消息傳遞,對于預訂者的持久消息等等。依附于JMS規(guī)范意味著,不論JMS消息提供者是誰,同樣的基本特性都是有效的。
? ? ? ? ? ?連接----ActiveMQ提供各種連接選擇,包括HTTP,HTTPS,IP多點傳送,SSL,STOMP,TCP,UDP,XMPP等。大量的連接協(xié)議支持使之具有更好的靈活性。很多現(xiàn)有的系統(tǒng)使用一種特定協(xié)議并且不能改變,所以一個支持多種協(xié)議的消息平臺降低了使用的門檻。雖然連接很重要,但是和其他容器集成也同樣重要。第四章將講解ActiveMQ的傳輸連接器(transport connectors)和網(wǎng)絡連接器(network connectors)。
? ? ? ? ? ?可插拔的持久性和安全----ActiveMQ提供多種持久性方案可供選擇,也可以完全按自己需求定制驗證和授權。例如,ActiveMQ通過KahaDB提供自己的超快速消息持久方案(ultra-fast message persistence),但也支持標準的JDBC方案。ActiveMQ可以通過配置文件提供簡單的驗證和授權,也提供標準的JAAS登陸模塊。
? ? ? ? ? ?用Java建立消息驅(qū)動應用----ActiveMQ最常用在Java應用中,用于發(fā)送和接收消息。這部分的內(nèi)容涉及JMS規(guī)范API。
? ? ? ? ? ? 與應用服務器集成----ActiveMQ與java應用服務器集成是很常見的。
? ? ? ? ? ? 客戶端APIs----ActiveMQ對多種語言提供客戶端API,除了Java之外還有C/C++,.NET,Perl,PHP,Python,Ruby等。這使得ActiveMQ能用在Java之外的其它語言中。很多其它語言都可以通過ActiveMQ提供的客戶端API使用ActiveMQ的全部特性。當然,ActiveMQ代理器(broker)仍然是運行在java虛擬機上,但是客戶端能夠使用其它的被支持的語言。
? ? ? ? 代理器集群(Broker clustering)----為了利于擴展,多個ActiveMQ broker能夠聯(lián)合工作。這個方式就是network of brokers并且能支持多種拓撲結(jié)構(gòu)。
? ? ? ?高級代理器特性和客戶端選項----ActiveMQ為代理器和客戶端連接提供很多高級的特性。ActiveMQ也可以通過代理器的XML配置文件支持Apache Camel。
? ? ? ? 簡單的管理----ActiveMQ是為開發(fā)者設計的。它并不需要專門的管理工具,因為它提供各種易用且強大的管理特性。有很多方法去監(jiān)控ActiveMQ的各個方面,可以通過JMX使用JConsole或ActiveMQ web console;可以運行ActiveMQ消息報告;可以用命令行腳本;可以通過日志。
2、了解JMS
JMS 公共 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?點對點域 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 發(fā)布/訂閱域
ConnectionFactory ? ? ? ? ? ? ? QueueConnectionFactory ? ? ?TopicConnectionFactory
Connection ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? QueueConnectioin ? ? ? ? ? ? TopicConnection
Destination ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Queue ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Topic
Session ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?QueueSession ? ? ? ? ? ? ? ? ? ?TopicSession
MessageProducer ? ? ? ? ? ? ? ? ? ? ?QueueSender ? ? ? ? ? ? ? ? ? ? TopicPublisher
MessageConsumer? ? ? ? ? ? ? ? ? ? QueueReceiver? ? ? ? ? ? ? ? ? TopicSubscriber
JMS定義了兩種方式:Queue(點對點);Topic(發(fā)布/訂閱)
ConnectionFactory是連接工廠,負責創(chuàng)建Connection.
Connection負責創(chuàng)建Session.
Session創(chuàng)建MessageProducer(用來發(fā)消息) 和MessageConsumer(用來接收消息)
Destination 是消息的目的地