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 进入金融系统”,具体的事例,大概就是这件事了。服务器

相关文章
相关标签/搜索