001.ActiveMQ概述

1. 概念

ActiveMQ是Apache推出的,一款開源的,徹底支持JMS1.1和J2EE1.4規範的JMS Provider實現的消息中間件(Message Oriented Middleware, MOM)html

1.1. 能作什麼

最主要的功能能是:實現JMS Provider,用來幫助實現高可用、高性能、可伸縮、易用和安全的企業級面向消息服務的系統。前端

1.2. 特色

  • 徹底支持JMS1.1和J2EE1.4規範(持久化、XA消息、事務);
  • 支持多種傳送協議: in-VM,SSL,TCP,NIO,UDP,JGroups,JXTA;
  • 支持多種消息應用層協議:AMQP v1.01、MQTT v3.1;
  • 可插拔的體系結構,能夠靈活定製,如:消息存儲方式、安全管理等;
  • 很容易和Application Server集成使用,如:同Tomcat的集成使用;
  • 多種語言和協議編寫客戶端,語言:Java、C、C++、C#、Python等;
  • 從設計上保證了高性能的集羣,客戶端-服務器,點對點;
  • 能夠容易的和Spring結合使用;
  • 支持經過JDBC和journal提供高速的消息持久化;
  • 支持與CXF、Axis的整合

2. 消息中間件

MOM基本功能: 將信息以消息的形式,從一個應用程序傳送到另外一個或多個應用程序;程序員

2.1. MOM的主要特色

  1. 消息異步接收
    相似手機短信的行爲,消息發送者不須要等待消息接收者的響應,減小軟件多系統集成的耦合度。
  2. 消息可靠接收
    確保消息在中間件可靠保存,只有接收方收到後才刪除消息,多個消息也能夠組成原子事務。

2.2. MOM的主要應用場景

在多個系統間進行整合和通信的時候,一般會要求:編程

  1. 可靠傳輸:數據不能丟失,有的時候,也會要求不能重複傳輸;
  2. 異步傳輸:不然各個系統同步發送接收數據,互相等待,形成系統瓶頸。

Some JMS 1.1 features are unsupported in the RabbitMQ JMS Client:後端

  • The JMS Client does not support server sessions.
  • XA transaction support interfaces are not implemented.
  • Topic selectors are supported with the RabbitMQ JMS topic selector plugin. Queue selectors are not yet implemented.
  • SSL and socket options for RabbitMQ connections are supported, but only using the (default) SSL connection protocols that the RabbitMQ client provides.
  • The JMS NoLocal subscription feature, which prevents delivery of messages published from a subscriber’s own connection, is not supported with RabbitMQ. You can call a method that includes the NoLocal argument, but it is ignored.

See the JMS API compliance documentation for a detailed list of supported JMS APIs.安全


  1. AMQP 主要是由金融領域的軟件專家們貢獻的創意,而聯合了通信和軟件方面的力量,一塊兒打造出來的規範。【Contributors: JPMorgan Chase Bank & Co., Cisco Systems, Inc., Credit Suisse, Envoy Technologies Inc., iMatix Corporation, IONA Technologies, Rabbit Technologies Ltd., Red Hat, Inc., TWIST Process Innovations Ltd, and 29West, Inc.】粗略的從概念上來說 AMQP 首先知足的是金融系統的消息通信業務需求。這是一個能夠和 JMS 進行類比的消息中間件開放規範,所不一樣的是 AMQP 同時定義了消息中間件的語意層面和協議層面;另一個不一樣是 AMQP 是語言中立的,而 JMS 僅和 Java 相關。AMQP 在「語意層面的定義」,這就意味着,它並不只僅是象 JMS 或者其餘的 MQ 同樣,僅能按照預約義的方式工做,而是「可編程」的消息中間件。而「語言中立」則意味着只要遵循 AMQP 的協議,任何一種語言均可以開發消息組件乃至中間件自己。好比說這樣的場景:「Java 寫的消息端(新的前端)經過 Erlang 寫的消息中間件(基礎設施)與 C 寫的另一個消息端(遺留系統)進行消息交互」。AMQP 是一個開放標準,目前還在 0.9 版本。還沒有成熟,但市場上已經出現了不少這個標準的實現產品。在 AMQP 所描繪的美好前景下,咱們能夠這麼設想未來構建在成熟以後構建在 AMQP 之上的金融系統。前端程序員用他們熟悉的「工業語言」來構建系統中新的應用模塊。後端程序員則繼續用「老舊語言」在「遺產系統」上慢慢改進。固然,金融系統須要他們賴以溝通消息互相調用的「基礎設施」必須堅若磐石。爲業界提供「高併發,易擴容」的產品,這彷佛正是 Erlang(RabitMQ基於該語言實現)的強項。以前據說「 Erlang 進入金融系統」,具體的事例,大概就是這件事了。服務器

相關文章
相關標籤/搜索