书摘和访谈:ActiveMQ in Action

阅读数:5733 2012 年 2 月 23 日

话题:Java语言 & 开发架构

ActiveMQ in Action》一书由 Bruce Snyder、Dejan Bosanac、Rob Davies 合著,内容涵盖开源消息中间件 ActiveMQ 的发展和使用。本书的第一部分介绍了消息中间件 ActiveMQ 和 Java 消息服务(JMS)。对本书使用的例子进行了简单说明之后,第二部分介绍了标准 ActiveMQ 组件的配置,包括传输连接器、持久化的消息存储和各个层次的安全控制。第三部分进行了深入介绍,覆盖的主题有:创建使用 ActiveMQ 的 Java 应用,怎么把 ActiveMQ 和 Tomcat、Jetty、Geronimo、JBoss 等应用服务器集成在一起,还有用 C++、.Net、PHP、Python、Ruby 等语言开发使用消息的应用。第四部分包括更多高级主题,比如高可用性和伸缩性、Broker 和客户端更高级的特性、性能调优、管理和监控。

InfoQ 对本书的合著者 Bruce Snyder 进行了采访,向他了解编写这本书的主要动机、ActiveMQ 容器里的事务管理和消息安全,还有消息服务领域的发展趋势。我们还制作了本书的书摘以飨读者,内容来自第七章——创建使用 ActiveMQ 的 Java 应用——的“用 Spring 编写 JMS 客户端”部分。在购买本书的时候,你还可以用折扣码 infoq40 来享受 40% 的折扣。

InfoQ:编写这本书的主要动机是什么?

Bruce Snyder:在 ActiveMQ 提交者社区里,消息队列、ActiveMQ 和 JMS 的相关知识是很多的。虽然 ActiveMQ 网站上有一些可用的信息,但它们组织得不是很好,而且对很多用户来说并不算详细。所以我们决定把我们的知识和想法整理成一本书。

InfoQ:异步消息服务架构现在处于什么状态?ActiveMQ 和其他开源、商用的消息 Broker 比起来怎么样?

Bruce:近年来,STOMP 协议的引入对异步消息服务产生了很大影响。STOMP 是 Streaming Text Orientated Messaging Protocol 的缩写。它由众多消息解决方案和客户端 API支撑,这些支撑不仅仅局限在 Java 社区内,其他社区也有很多。STOMP 协议的关注点是开发一种可互操作的、纯文本的 Wire 格式,允许任何语言编写的 STOMP 客户端和任何语言编写的 STOMP 消息 Broker 进行通讯。类似于 HTTP,STOMP 协议为客户端提供了一组动词和命令,以便和消息 Broker 进行交互。此外,Advanced Message Queuing Protocol(AMQP)规范也已经成熟,影响力也越来越大了。AMQP 规范旨在为消息服务创建一个标准化的 Wire 级别协议,让它像传输 Web 内容所需的 HTTP 一样无所不在。JMS 2.0 的 JSR 刚开始组织。JMS 1.0 发布于 1998 年,只在 2002 年做了一次小的更新,所以关注 JMS 2.0 里提出和讨论的建议应该会很有意思。

InfoQ:你能谈谈在使用 ActiveMQ 的时候,消息服务架构里安全方面的内容么?

Bruce:ActiveMQ 可以在 Broker 级别、目的地级别和消息级别进行安全控制。ActiveMQ 在 Broker 级别使用认证来进行安全控制,ActiveMQ 提供的认证方式有两种:简单认证和基于 JAAS 的可插拔式认证。对于简单认证,ActiveMQ 利用 XML 配置文件里配置的普通用户和组来决定是否允许用户访问。至于基于 JAAS 的认证,ActiveMQ 提供了一个可以利用属性文件、LDAP 或 SSL 证书的 JAAS 登录模块,你也可以实现自己的 JAAS 登录模块。目的地级别需要进行安全处理的相关操作有 read、write、admin 三个。ActiveMQ 通过 JAAS 登录模块提供的认证功能来处理这三个操作。消息级别的安全性是应用特定的,只有某个目的地上的特定消息才能被访问。为了达到这个级别的安全性,你必须实现自己的消息授权策略。在这个级别进行安全控制需要记住的是,某个目的地上的所有消息都必须应用自定义的消息授权策略。所以你需要留意一下,不要让授权的成本过于高昂。

InfoQ:ActiveMQ 提供哪种类型的事务管理支持呢?尤其对需要两阶段(XA)事务的用例来说。

Bruce:ActiveMQ 支持 JTA 和基本的 XA。但我不是很喜欢分布式事务,因为使用 XA 的应用往往比较脆弱,而且性能低下。对这个话题感兴趣的读者们可以看看 Pat Helland 关于此方面的文章——Life beyond Distributed Transactions: an Apostate's Opinion

InfoQ:你希望 JMS 2.0 和 JMS 规范以后的版本能提供哪些新特性呢?

Bruce:我希望 JMS 能与 Web、其他标准(比如 Web Socket 和 AMQP)更好地交互。除了 JMS 规范的内容,ActiveMQ 当然还有很多创新,但我不确定这些创新会不会被纳入到 JMS 里去。

InfoQ:在消息服务领域里,会有怎样的发展趋势和技术、工具呢?

Bruce:近年来,IT 领域里的整合工作有很多,企业集成模式已经越来越流行,而且大大超过过去几年。Spring 集成和 Apache Camel 这两个被广泛运用的 Java 集成框架已经能满足这一领域的需求了。此外,还有很多人现在正在研究异步消息传输和事件驱动架构(EDA)。现在有一些非常大型、非常有名的系统都把 EDA 作为中心架构,这里仅列举出 Amazon、Twitter 和 Facebook,VMware 的 CloudFoundry 也是使用 EDA 构建的。

InfoQ:Bruce,谢谢你能参加我们的采访。最后一个问题,你喜欢的 IT 类和非 IT 类书籍有哪些?

Bruce:我经常读书,喜欢的书籍种类也比较繁多,包括商业、IT、小说、宗教、经典读物等等。《三杯茶》 是多年来最吸引我的一本书,还有《三杯茶 2:石头变学校》。这两本书讲述了美国人 Greg Mortenson 在阿富汗和巴基斯坦的偏远地区苦心建设多所学校的故事。去年在科罗拉多州北部,我还很幸运地听了 Mortenson 的一场讲座。最近,商业书籍《重来》让我欲罢不能。这本书是个有关商业的短文集,里面的内容不同于很多传统的商业观念。《重来》重点关注进步、生产率、竞争、雇佣、文化等领域方面的一些颠覆性想法。尽管书里的有些概念并不是全新的,提问的风格却吸引人、犀利、发人深省、切切实实。

至于我读过的 IT 书籍,我喜欢并推荐的有三本:

  • Java 并发编程实践
  • 企业集成模式
  • 事件处理实战

关于本书作者

Bruce Snyder 在企业软件开发和开源软件方面经验老到。Bruce 有着超过十五年的经验,一直致力于软件的研究和发展,使用过的技术有 Java EE、企业消息传递和集成、面向服务的架构和事件驱动。Bruce 是 SpringSource/VMware 的一名高级软件工程师、Apache 软件基金会的成员,并参与了很多 Apache 项目的开发,包括 ActiveMQ 在内。他不仅参与编写过有关 ActiveMQ、Spring 框架、Maven 和 Geronimo 的书籍,还是诸多国际软件会议公认的讲师,在开源软件社区的建立过程中也出力不少。Bruce 和他的家人生活在美丽的科罗拉多州博尔德市,平时喜欢骑行、登山、跑步等各种户外活动。

查看英文原文:Interview and Book Excerpt: ActiveMQ in Action


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。