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