去年夏天 JBoss 宣布将 JBoss Messaging 改弦易张为 HornetQ ,半年过去了,HornetQ 的首个 GA 版也终于破茧而出了。
HornetQ 是个开源的社区项目,用于构建多协议、嵌入式、高性能、集群及异步的消息系统。HornetQ 既能用于小型应用,也能用于大规模的企业消息系统中。
在 HornetQ 最初的声明中,JBoss 解释了 HornetQ 与 JBoss Messaging 2.0 之间的关系:
在过去几年的开发中,HornetQ 代码基始终叫做 JBoss Messaging 2.0,因此我们决定将 JBoss Messaging 2.0 改名为 HornetQ,同时将其分离成独立项目,因为它与 JBoss Messaging 1.x 在很多地方都已经不同了,我们可不想将这两个完全不同的系统混为一谈。HornetQ 的大部分代码都与 JBoss Messaging 1.x 大相径庭了。那么,现在的 JBoss Messaging 又怎么样了呢?JBoss Messaging 1.x 仍旧处在 JBoss Messaging 之下,同时该项目目前仅处在维护模式下,新的开发工作都在 HornetQ 项目上进行。
HornetQ 既可以独立的消息服务器的形式运行,也可以集成到 JBoss 应用服务器中:
HornetQ 完全不依赖于任何 JBoss 应用服务器组件。事实上,除了 JDK 和 Netty 之外,HornetQ 核心并不依赖于任何其他的程序库。我们可以轻松将其集成到 JBoss 应用服务器中以作为 JMS 提供源,同时也可以在 JBoss 应用服务器之外以独立的消息服务器的形式运行,功能上没有任何损失,甚至还可以在 IoC 框架(如 Spring 或 Google Guice)中对其进行实例化。除此以外,还可以将 HornetQ 直接嵌入到自己的应用中。
JBoss 说其定制的用于消息持久化的日志文件系统要比其竞争对手的使用关系数据库的解决方案快很多。
HornetQ 通过其内置、高性能的日志文件系统对消息进行持久化。HornetQ 并没有使用笨重、缓慢的关系数据库进行持久化。其使用的日志文件系统会自动检测 HornetQ 是否运行在 Linux 上,如果是的话则通过本地代码层调用 Linux Asynchronous IO(AIO)以提高性能。如果无法使用 AIO 则转而使用 Java NIO,这样 HornetQ 就可以无缝运行在任何 Java 平台上了。
由于 HornetQ 并没有使用数据库进行持久化,因此之前 JBoss Messaging 产品的用户如果想要对现有的 queue 进行移植则需要使用 JMS Bridge :
如果想要移植 queue 或是 topic 数据,我推荐使用 JMS Bridge 获取老服务器中的消息并将其发到新服务器上去。这种技术适用于任何两个兼容的 JMS provider。
HornetQ 将作为 JBoss Application Server 6 中的默认 JMS provider,同时 JBoss 希望通过实现一套 REST 风格的 API 以在云中使用 HornetQ 2.1,进而达到协同处理消息的目的:
为消息定义一个 RESTful 接口,这样就可以通过普通的 HTTP 访问了。REST 很可能会成为事实上的云接口风格标准。对我们来说,要想实现云中的消息 provider,REST 消息接口非常关键。RESTful 接口将会成为 REST-* 项目中 REST 消息规范的一个实现。
项目 wiki 上列出了长长的 2.0.0.GA 特性列表,读者不妨移步一观。
HornetQ 基于 Apache Software License v2.0 ,同时 Red Hat 计划在不远的将来把其作为 JBoss Enterprise Application Platform 订阅的组成部分。
各位可以在 HornetQ 的项目站点和 wiki 上了解到更多信息,同时还有一个简短的指南可以帮助各位快速上手 HornetQ。
查看英文原文: JBoss HornetQ 2.0.0.GA Released with (Optional) Native Linux Journal for Improved Performance
评论