写点什么

书摘和访谈:ActiveMQ in Action

2012 年 2 月 23 日

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 )关注我们,并与我们的编辑和其他读者朋友交流。

2012 年 2 月 23 日 00:006090
用户头像

发布了 151 篇内容, 共 52.3 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
  • Jim Marino 与 Meeraj Kunnumpurath 专访:关于 SCA 和 Fabric3

    BEA发布了在WebLogic 10.3中支持的SCA技术预览版,它是以开源的Fabric3运行时为基础构建的。InfoQ对Jim Marino和Meeraj Kunnumpurath进行了专访,前者是BEA Systems的技术主管,后者是VocaLink的首席技术人员。我们就他们对SOA和SCA的看法,VocaLink实施SOA的方法和这个技术的关键优势进行了讨论。

  • 书评:《理解 SCA》

    在SCA规范草案首次发布四年之后,SCA依旧是一门未被很好理解的技术,知道的人也并不太多。然而,IBM和Oracle已经使用它来构建关键的产品套件了。SCA规范的两位作者,Jim Marino和Michael Rowley出版了一本SCA入门实践指南,该书涵盖了从持久层到表现层的所有编程模型。

  • Liftbridge 为 NATS 提供了类 Kafka 的日志 API

    事件驱动是当前的一个技术热点。开源项目Liftbridge以可扩展的类Kafka日志API扩展了NATS,加入到这一热点领域中。为了解该项目的更多细节,并了解不断变化中的系统连接技术环境,InfoQ采访了资深技术人员Tyler Treat。Treat是Liftbridge项目的创立者,也是NATS的长期贡献者。

  • Mark Richard 的《Java 消息服务》第二版

    Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题,例如两种编程模型:发布和订阅模型以及点对点模型,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。谈话的内容包括EJB 3.0,Spring的消息驱动对象(Message Driven POJO's,MDP)和企业服务总线(ESB) 架构。

  • SaaS 先驱 Salesforce

    Salseforce是云计算先驱,也是全球知名的CRM服务提供商。在20多年前就超前地提出了云计算和SaaS服务的概念,如今已是全球领先的云计算应用提供者。

    2018 年 8 月 24 日

  • TOP 13 大最热开源微服务 Java 框架

    本文列举了13大可在JVM上构建可靠轻量级微服务的Java框架

  • Vert.x 4 将于年底发布!它曾让 VMware 和 Red Hat 掐架

    Eclipse Vert.x是一个用于在JVM上构建响应式应用程序的工具包。它的高性能、低延迟特性吸引了不少开发者。

  • 阿里巴巴百万级容器技术 PouchContainer 揭秘

    演讲嘉宾 孙宏亮,阿里巴巴技术专家。 内容介绍 容器技术已然成为企业数据中心的标配技术,企业通过容器技术尝试快速交付业务,然而事实上仍未达到容器技术在企业中迅速铺开的阶段。如何通过高效可靠的容器技术,帮助企业迅速实现内部存量应用的容器化,以及提供安全隔离性强的环境,依然是容器技术急需解决的难题。本次演讲将介绍阿里巴巴容器技术开源项目PouchContainer,分享PouchContainer服务阿里巴巴所有在线业务一路走来的经验总结,从业务的角度出发,从技术的角度剖析,揭秘PouchContainer的庐山真面目。

    2018 年 9 月 12 日

  • 预习 | 怎样更好地学习这门课?

    希望你能从理论到实践,从基础到进阶,从深度到广度,全方位吃透消息队列,进阶为消息队列“小达人”。

    2019 年 7 月 22 日

  • 高级消息队列协议将使消息服务平价化

    新组成的AMQP工作组于2006年1月20日发布了高级消息队列协议(AMQP规范0.8),该工作组由JP Morgan Chase、RedHat、Twist、IONA、Cisco以及其它单位组成。AMQP是一个基于消息队列的开放协议,设计时考虑了性能和可交互性;它为基于队列的消息机制定义了一个协议和模型。

  • Apache Kafka 的过去,现在,和未来

    演讲嘉宾 Jun Rao,Confluent 联合创始人,Kafka作者之一。 内容介绍 2010年,LinkedIn开始开发Kafka。2011年,Kafka成为Apache开源项目。从那以后,Kafka的使用在各种企业中迅速增长。目前,超过30%的世界500强公司已经在使用Kafka。本次演讲会先介绍为什么Kafka最开始成为一个非常受欢迎的发布订阅消息系统。接着会介绍Kafka近期增加的企业级功能。最后会介绍未来如何把Kafka建成实时流数据处理平台。

    2018 年 9 月 12 日

  • 书摘和访谈:Open Source SOA

    Boris Lublinsky 采访了Jeff Davis,该访谈是Davis新书《Open Source SOA》评论的一部分。本书涵盖了选择和使用开源产品实施SOA的内容。采访过程中抛出了一些关于SOA是“业务问题”还是技术性分布式系统;SOAP vs.REST;WSDL,“坚持标准”作为评估标准等问题。

  • Java 微服务实用指南(二)

    本文将为大家介绍Java 微服务的常见问题, Java 微服务框架的选型,以及微服务实践常遇到的挑战。

  • 塑造 Java 的未来(英文演讲)

    演讲嘉宾 Georges Saab,Oracle Java平台事业群VP。 内容介绍 作为应用最普遍的技术之一,Java不断给我们周边的应用世界带来创新。通过不断地引入现代化特性,Java为开发者提供了一个符合时代要求的语言和平台,支持创建下一代丰富、可伸缩和安全的企业级应用。随着技术领域的变化,Java也做好准备,将以更快的节奏,持续提供新特性,解决新机遇下的需求。 在本次演讲中,Saab先生会重点分享Java将如何以更快的节奏持续增强,帮忙开发者改进和加速应用点创新、开发和部署,特别是在云环境下如何做到这些。

    2018 年 9 月 12 日

  • 加餐一 | 这 5 本关于物联网的好书,值得一读

    今天,我会为你推荐5本非常值得读的书,如果你想从事物联网行业,一定不要错过。

    2020 年 12 月 9 日

  • Restfulie 作者 Guilherme Silveira 专访

    最近,Guilherme Silviera将自己的Restfulie项目和RESTeasy进行了比较,后者是一个JAX-RS的实现,并质疑RESTeasy(甚至于JAX-RS)是否是构建RESTful应用的正确基础。

  • SCA 的未来

    在JavaOne关于服务组件架构(Service Component Architecture,SCA)的座谈会上,最具争论性的主题之一就是SCA的客户端编程模型。主持人David Chappell和Gregor Hohpe就此分享了他们的感受。

发现更多内容

三分钟看懂快速开发,常用软件快速开发平台速览

Marilyn

敏捷开发 快速开发 企业开发 企业应用

WebRTC SDP 详解和剖析

阿里云视频云

深度学习在物理层信号处理中的应用研究

华为云开发者社区

学习 模型 物理层

研发管理:敏捷研发下周报的价值

云原生实验室

云原生 敏捷 研发管理 周报

基于Spring Boot 和Spring Cloud和Docker的微服务架构项目实战

Java成神之路

Java 程序员 架构 编程语言

阿里P8告诉你:微服务架构设计解决了什么问题

互联网架构师小马

Java 编程 架构 微服务 软件开发

Linux角度仰视Goroutine的GMP

ninetyhe

Java golang Linux 多线程与高并发 golang调度

5G多输入多输出技术,到底是个啥东东?

华为云开发者社区

5G 输入 输出

架构探索:事务处理一

carol

想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗?

Crud的程序员

Java 程序员 技能

基于SpringBoot+Redis+Vue的后台管理系统开源项目,附源码地址

Java成神之路

Java 程序员 架构 编程语言

王者级别的Java多线程技术笔记,我愿奉你为地表最强!

Java架构师迁哥

阿里表哥甩我一份Redis笔记,看完还进不了阿里让我卖豆腐去

互联网架构师小马

Java nosql redis 缓存 面试

这是我见过最好的算法笔记,四面字节拿offer的感悟

互联网架构师小马

Java 字节跳动 数据结构 面试 算法

工商银行基于 Dubbo 构建金融微服务架构的实践-服务发现篇

阿里巴巴云原生

云原生 dubbo 中间件 案例分享 CloudNative

redis系统深度学习四:主节点自动化故障恢复——哨兵

linux亦有归途

数据库 redis 大数据 故障

拆解增长黑客之实战(一):获客与激活

丁一

增长 产品运营

基于RTMP数据传输协议的实时流媒体技术研究(论文全文)

程序员小灰

音视频 ffmpeg 流媒体 RTMP webrtc、

CloudIDE插件开发实战:教你如何调试代码

华为云开发者社区

ide 开发 Cloud

站在巨人的肩膀上学习:五位阿里大牛联手撰写的《深入浅出Java多线程》

Java成神之路

Java 程序员 架构 面试 编程语言

架构师训练营第 1 期 第 11 周作业

李循律

极客大学架构师训练营

理解Python协程的本质

Justfly

Python 协程 异步 Async 异步编程

GitHub上标星75k+的《Java面试突击版》,美团架构师呕心沥血整理,已助多人拿到满意的大厂offer。

Java成神之路

Java 程序员 架构 面试 编程语言

Java开发连Redis都不会还想跳槽涨薪?先把Redis的知识点吃透再说

Java成神之路

Java 程序员 架构 面试 编程语言

《Web自动化》基础知识脑图

清菡

Web

InfoQ 内容推荐位资源限时开放

丁晓昀

InfoQ 资源

流动性挖矿系统APP开发|流动性挖矿软件开发

开發I852946OIIO

系统开发

为什么阿里人能够快速成长?看完他们Java架构进化笔记,我秒懂!

Java架构追梦

Java 学习 架构 面试 成长笔记

多活/多机房的几种实现方式与重点

Justfly

高可用 跨机房 数据同步 异地多活容灾

揭秘 VMAF 视频质量评测标准

阿里云视频云

视频 图像处理

前端开发还可以这么玩?元数据实践分享

华为云开发者社区

前端开发 元数据 组件 ROMA 业务流

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

书摘和访谈:ActiveMQ in Action-InfoQ