文章: 书摘和访谈:ActiveMQ in Action
《 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和客户端更高级的特性、性能调优、管理和监控。
相关厂商内容
Inedo合作伙伴Alex Papadimoulis谈代码之丑之美
QClub(大连站)——移动应用开发之HTML5(2月25日 免费报名中!)
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中文站投稿或者参与内容翻译工作,请邮件至 [email protected]。也欢迎大家通过新浪微博( @InfoQ)或者腾讯微博( @InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。