開(kāi)源的企業(yè)消息服務(wù)供應(yīng)者Apache ActiveMQ最近發(fā)布了5.1版,該版本在message broker的穩(wěn)定性和性能上進(jìn)行了很多改進(jìn)。它還支持目的地監(jiān)控、對(duì)消息按優(yōu)先級(jí)排序,通過(guò)新的msmq傳輸組件實(shí)現(xiàn)的Microsoft Message Queue(MSMQ)到ActiveMQ的橋。
ActiveMQ容器的監(jiān)控模塊也進(jìn)行了大量改進(jìn)。增加一個(gè)新類——DestinationSource,它用來(lái)訪問(wèn)可用的Queues、Topics以及監(jiān)聽(tīng)容器中Queues/Topics的創(chuàng)建或銷毀。有一個(gè)新的API可以幫助最終用戶查看可用的目的地(destinations)并對(duì)其進(jìn)行查詢以得到JMS統(tǒng)計(jì)信息,如活動(dòng)隊(duì)列數(shù)量、隊(duì)列深度及消息數(shù)量等等。
新版本的其他新特性列舉如下:
無(wú)需JMS Session和consumer就能獲取消息的新API。
增加一個(gè)新的sendTimeout屬性,這樣就可以在MessageProducer類中更加優(yōu)雅地處理超時(shí)。
當(dāng)傳輸失敗時(shí),可以為已建立連接的備份通道增加選項(xiàng)。當(dāng)主傳輸失敗時(shí)可以動(dòng)態(tài)增加備份通道。
ActiveMQ的配置現(xiàn)在可以驗(yàn)證XSD了,這意味著它可以嵌到Spring配置文件中。
管理控制臺(tái)JAR文件(activemq-console.jar)現(xiàn)在可以O(shè)SGi包的形式部署,因此它能在開(kāi)源的ESB容器——Apache ServiceMix中重用。新版的ActiveMQ還解決了幾個(gè)bugs,其中一些發(fā)生在高負(fù)載情況下,另一些與內(nèi)存泄漏和性能有關(guān)。
去年12月發(fā)布的ActiveMQ 5.0擁有一些重要的新特性,列舉如下:
AMQ消息存儲(chǔ)(AMQ Message Store)——這是一個(gè)嵌入式、事務(wù)性的消息存儲(chǔ),可用來(lái)進(jìn)行快速、可靠的持久化。
消息指針(Message Cursors)是新的內(nèi)存模型的一部分,當(dāng)有可用的空間時(shí)(對(duì)持久化的消息使用存儲(chǔ)指針),它可以在存儲(chǔ)地對(duì)消息進(jìn)行分頁(yè)。增加該特性的目的在于解決舊版本的ActiveMQ中一個(gè)常見(jiàn)問(wèn)題:當(dāng)使用非持久化的消息時(shí)會(huì)導(dǎo)致內(nèi)存溢出。
Blob消息(Blob Messages):增加了一個(gè)新的BlobMessage API以處理客戶端和ActiveMQ服務(wù)器之間發(fā)送的JMS消息中的二進(jìn)制大對(duì)象(Binary Large OBjects——BLOBs)。
鏡像隊(duì)列(Mirrored Queues):增加了鏡像隊(duì)列特性以更加輕松地監(jiān)控ActiveMQ容器中特定的隊(duì)列上的生產(chǎn)者和消費(fèi)者之間的消息流。這些鏡像隊(duì)列不用配置就可以監(jiān)聽(tīng)Message Broker內(nèi)的所有隊(duì)列。當(dāng)其可用時(shí),鏡像隊(duì)列會(huì)將發(fā)送到隊(duì)列中的每條消息同時(shí)發(fā)送到一個(gè)具有類似名字的Topic;這樣開(kāi)發(fā)者和web管理員如果想查看隊(duì)列上的消息交換的話,他們就可以使用鏡像隊(duì)列的topic。
生產(chǎn)者流程控制(Producer Flow Control):開(kāi)發(fā)者可以獨(dú)立控制共享的JMS連接上的每個(gè)生產(chǎn)者而不必掛起整個(gè)連接。
ActiveMQ基于Java消息服務(wù)(Java Message Service,即JMS)規(guī)范1.1版。它還集成了Spring框架,因此通過(guò)Spring可以將ActiveMQ容器作為一個(gè)嵌入式broker。 可以在其站點(diǎn)上找到5.0版的更多入門文檔以及在企業(yè)應(yīng)用中使用ActiveMQ的一些示例。
Apache Camel是ActiveMQ的一個(gè)子項(xiàng)目,它用來(lái)管理運(yùn)行在ActiveMQ容器上進(jìn)程的仲裁和路由活動(dòng)。Camel(一個(gè)基于Spring的集成框架)實(shí)現(xiàn)了企業(yè)集成模式,從而使得開(kāi)發(fā)者可以使用基于Java的領(lǐng)域特定語(yǔ)言(Domain Specific Language,或者叫Fluent API)、Scala DSL或者Spring的XML配置文件來(lái)配置路由和仲裁規(guī)則。
聯(lián)系客服