1. 程式人生 > >ActiveMQ深入淺出系列 (一)

ActiveMQ深入淺出系列 (一)

fis 針對 rds message 開源 對等通信 內存 一個 關閉

簡介

Apache ActiveMQ是一個比較廣泛使用的開源消息中間件。他的性能較快,並且支持許多語言的客戶端及多種協議。它在企業集成模式中非常易於使用,並且完全支持JMS 1.1 和J2EE 1.4的很多高級特性。Apache ActiveMQ在Apache 2.0 Liense下開源。

主要特性

  • 支持Java, C, C++, C#, Ruby, Perl, Python, PHP等客戶端
    • OpenWire模式下的Java, C, C++, C#客戶端的性能非常高。
    • Stomp支持是為了C, Ruby, Perl, Python, PHP, ActionScript/Flash,Smalltalk 語言能夠方便的和ActiveMQ Broker 通信,就像其他消息Broker一樣。
    • 支持AMQP v1.0 。
    • AMQP v1.0 支持允許在IOT環境中的設備的鏈接
  • JMS客戶端和消息Broker完全支持企業集成模式。
  • 支持諸如 Message Groups, Virtual Destinations, Wildcards and Composite Destinations
    • Message Group是針對queue。如果在queue模式下,一個生產者對應多個消費者,每生產一條消息,會被消費隨即搶到,如果我們不希望這樣,只希望固定的消息被固定的消費者消費,那麽就采用group對消息進行一個類似標記的作用。另外一方面,Message Groups特性也是一種負載均衡的機制。在一個消息被分發到consumer之前,broker首先檢查消息JMSXGroupID屬性。如果存在,那麽broker會檢查是否有某個consumer擁有這個message group。如果沒有,那麽broker會選擇一個consumer,並將它關聯到這個message group。此後,這個consumer會接收這個message group的所有消息,直到: 1:Consumer被關閉 2:Message group被關閉,通過發送一個消息,並設置這個消息的JMSXGroupSeq為-1
    • Virtual Destinations 集群應用想要消費同一個隊列時可以使用該模式。使用起來非常簡單,對於消息發布者來說,就是一個正常的Topic,名稱以VirtualTopic.開頭。例如VirtualTopic.TEST。對於消息接收端來說,是個隊列,不同應用(或者說不同集群 不同組)裏使用不同的前綴作為隊列的名稱,即可表明自己的身份也可實現消費端應用分組。例如Consumer.A.VirtualTopic.TEST來說明他是A組的消費者。可以在同一個組內使用多個consumer來消費此組消息。每組相當於一個持久化訂閱者,組內可以有多個消費者共同消費消息。
    • Wildcards and Composite Destination,通過通配符監聽一批消息隊列及同時發送多個通知。
  • 完全支持JMS 1.1和J2EE 1.4,支持transient, persistent, transactional and XA messaging
  • Spring支持,使ActiveMQ可以輕松地嵌入到Spring應用程序中,並使用Spring的XML配置機制進行配置
  • 在流行的J2EE服務器(如TomEE、Geronimo、JBoss、GlassFish和WebLogic)中進行了測試
    • 包含用於入站和出站消息傳遞的JCA 1.5資源適配器,以便ActiveMQ能夠在任何符合J2EE 1.4的服務器中自動部署
  • 支持可插入傳輸協議,如in-VM、TCP、SSL、NIO、UDP、多播、JGroups和JXTA傳輸
  • 支持使用JDBC和高性能日誌進行非常快速的持久性
  • 適用於高性能集群、客戶端-服務器、對等通信
  • REST API為消息傳遞提供與技術無關和語言無關的基於web的API
  • Ajax支持使用純DHTML向web瀏覽器提供web流支持,允許web瀏覽器成為消息傳遞結構的一部分
  • CXF和Axis支持,以便ActiveMQ可以輕松地放到這兩個web服務棧中,以提供可靠的消息傳遞
  • 可以作為內存中的JMS提供程序使用,非常適合對JMS進行單元測試

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

ActiveMQ深入淺出系列 (一)