ActiveMQ 简介
消息可以用在不同应用程序相互通知,或者相互操作。企业级别的消息软件出来的很早,但是开源的消息解决方案出来就晚很多。其中ActiveMQ 就是其中一种,提供了异步的松散的应用程序间的通讯解决方案。
ActiveMQ 是一个开源的JMS MOM(message-oriented middleware),采用的是Apache License。当然这个东西成也Apache败也Apache。Apache已经 推出了ActiveMQ Apollo来提供更好更稳定的消息服务。世面上也有更多的选择,比如说RabbitMQ等优秀的其他解决方案,因为不是本文的重点,这先放一边。
ActiveMQ 特性
实现了JMS 1.1。
这个刚开始确实不错,但是现在去看过时了。
支持各种协议。
STOMP,TCP,UDP,XMPP,后期通过插件也实现了amqp等协议。
持久化和安全性。
一般的消息中间件都有,不过ActiveMQ独有JDBC方式。
使用Java编写。
这个其实不算优点。
丰富的客户端支持
出来很久了,PHP, C#, Python, C/C++ 客户端都有现成的还比较成熟,社区以及各种文档也比较全。不过我个人认为官方文档不如RabbitMQ。
其他特性
支持集群,以及其他高级特性。自带管理控制台,这个很实用不过一般消息中间件也都有。
为什么要用ActiveMQ
松耦合的系统架构ActiveMQ 可以帮助您搭建松耦合的应用程序架构,减少应用程序间的依赖。应用程序可以依赖ActiveMQ来实现应用程序间的消息传递。这是一个典型的fire-and-forget模式,意味着应用程序只需要将消息发给ActiveMQ,不需要关注消息是如何传递的。而消息的接收方,不需要关注消息是怎么产生的。
既然这里说了这么多耦合,那么系统的耦合性到底是什么?简单的判断方式是一个应用程序的修改将会导致其他的应用程序也必须做出修改,这样我们称这几个应用是强耦合的。要解耦,我们通常的做法是借助于一个中间层,这里就是我们的ActiveMQ了。
什么时候考虑使用ActiveMQ
多语言混合编程的情况。
用来替代RPC。
用来解耦应用程序。
事件驱动的架构。
提升应用程序的可扩展性。
参考:
ActiveMQ in Action