Apache ActiveMQ 是远程系统间进行通讯的消息代理,实现了 JMS(Java Message Service,Java 消息服务)。尽管 ActiveMQ 是使用 Java 写的,可是其提供了众多语言(包括 C/C++,.NET,Perl,PHP,Python,Ruby等)的 API。本书提供了商业应用里配置,使用 ActiveMQ 须要的知识。
第一部分,咱们将简单介绍 ActiveMQ 带你入门。咱们讨论跟面向消息的中间件和 JMS 相关的概念以便你能了解企业消息发展背景。咱们介绍了书中的例子,包括它们的使用场景以及如何运行这些例子。咱们将在全书中使用这些例子,因此学习每章时透彻理解这些例子是很是重要的。第一部分提供了学习本书剩余章节的基础知识。html
企业消息软件早在 1980 年就存在了。它不只是应用之间进行交流的一种方式,也是集成的一种方式。可是,开源的解决方案在近十年快速增多。Apache ActiveMQ 就是这么一种解决方案,它为应用提供了一种异步地,松耦合地,通讯方式。这章将向你介绍 ActiveMQ。
ActiveMQ 是来自 Apache 软件基金会听从 Java Message Service(JMS)1.1 规范的面向消息的中间件,它提供了高可用性,高性能,可伸缩性以及安全的企业消息服务。ActiveMQ 使用了 Apache 许可,Apache 许但是自由的,商业友好的许可证书。也所以,任何人均可以使用和修改 ActiveMQ 并从新发布而不须要任何咨询。这对于商业公司在基础架构上无偿使用 ActiveMQ 是很是重要的。正如第二章描述的那样,一个面向消息的中间件充当了多个应用间事件交流的媒介,保证了它们能够被准确地送达接收者那里。所以,高可用性,高性能,和可伸缩性对一个消息中间件来讲是很是重要的。
ActiveMQ 的目标提供跨越多种编程语言和平台的标准的消息中间件。ActiveMQ 实现了 JMS 规范并额外提供了一打的特性。额外的特性咱们将在本书的其余章节详细介绍。
你学习ActiveMQ 的爱之初体验对你从此可否成功地运用 ActiveMQ 是很是重要的。对于菜鸟来讲,ActiveMQ 看起来多是很是复杂难学的,可是对于经验丰富的老手来讲,它是很是容易理解的。本章就是以一种轻松的方式带你熟悉 ActiveMQ。你将不只学习 ActiveMQ 的特性,也能了解到在你的开发中为何使用 ActiveMQ 以及什么时候使用 ActiveMQ。编程
通过多年的努力改进,ActiveMQ 提供了不少丰富的特性。咱们将在本书讨论的特性以下:安全
这里只是对 ActiveMQ 特性的初体验。正如上面所说,这些主题将在本书后面的章节逐步讲解。为了演示的目的,咱们提供了几个例子,这些例子将在第 3 章开始引入。可是在提供这些例子以前,想必你定是想问为何要使用 ActiveMQ?服务器
早在 2003 年,一群开源社区的开发者走到一块组建了 Apache Geronimo。之因此这么作,是由于他们发现世界上居然没有一个使用了 BSD 风格许可证的好用的消息代理。Geronimo 为了兼容 Java EE,须要实现 JMS 规范。这些开发者们都拥有丰富的使用消息代理的经验,有些人甚至之前本身写过简单的消息代理,很快他们开始讨论写一个开源的消息代理的可行性。而当时市场上的消息代理服务都是闭源且收费的,这更刺激了开发者们建立开源消息代理的决心。很快,使用 Apache 许可证的开源消息中间件 ActiveMQ 项目启动了。
那么,咱们为何选择使用 ActiveMQ 呢?网络
松耦合架构通常是相对于基于 RPC(Remote Procedure Calls)的紧耦合架构来讲的。这种松耦合架构一般来讲是异步的,一个消息发起调用后并不关心其余系统的动做,不一样系统间没有独立性和实时性依赖。ActiveMQ 能够为应用提供消息分发到对端的保证。所以,消息生产者仅仅是生产和发送消息,并不关心消息怎么被分发以及什么时候被分发;消息消费者也是如此,它们不关心消息来自哪里以及它们是怎么被发送到 ActiveMQ 的。这在异构环境下是很是重要的,客户端可使用不一样的语言甚至不一样的协议来编写。ActiveMQ 在异构环境中充当中间媒介,以异步的方式和不一样系统进行交互。下一章咱们再详细讨论这些内容。
当咱们设计分布式系统时,耦合性是必然要考虑到的一点。耦合是指两个应用系统或多个应用系统之间的内部独立性。耦合概念的一个简单解释是一个应用的改变是否影响其余系统做出改变。一个应用变化是否会强制引发另一个应用变化呢?若是是,那么这两个应用就是紧耦合;不然,这两个应用就是松耦合的。通常来讲,紧耦合的系统比松耦合的系统更难维护,也就是说,松耦合系统更容易应对未来的变化。
第二章讨论的中间件(包括 COM,CORBA,DCE 以及 EJB)均是使用 RPC 来进行远程通讯的,都被认为是紧耦合系统。使用 RPC 后,一个系统调用另一个系统,调用者将阻塞直到被调用者发回响应。
而在系统架构中加上消息中间件后,系统就成了松耦合的了。架构
何时使用 ActiveMQ 须要咱们仔细考虑。下面是一些使用了 ActiveMQ 的场景:异步
这里做者扯了一大堆皮,无非就是使用 ActiveMQ 解耦系统,将系统异步化,好处多多之类的!编程语言
下载和安装就没必要说了,能够直接去官网看文档了!
运行自带的例子的化,能够去读一下 ./docs/user-guide.html
,这个文档浅显易懂,比本身瞎折腾好多了!分布式