开源的企业消息服务供应者 Apache ActiveMQ 最近发布了 5.1 版,该版本在 message broker 的稳定性和性能上进行了很多改进。它还支持目的地监控、对消息按优先级排序,通过新的 msmq 传输组件实现的 Microsoft Message Queue( MSMQ )到 ActiveMQ 的桥。
ActiveMQ 容器的监控模块也进行了大量改进。增加一个新类——DestinationSource,它用来访问可用的 Queues 、 Topics 以及监听容器中 Queues/Topics 的创建或销毁。有一个新的 API 可以帮助最终用户查看可用的目的地(destinations)并对其进行查询以得到 JMS 统计信息,如活动队列数量、队列深度及消息数量等等。
新版本的其他新特性列举如下:
- 无需 JMS Session 和 consumer 就能获取消息的新 API。
- 增加一个新的 sendTimeout 属性,这样就可以在 MessageProducer 类中更加优雅地处理超时。
- 当传输失败时,可以为已建立连接的备份通道增加选项。当主传输失败时可以动态增加备份通道。
- ActiveMQ 的配置现在可以验证 XSD 了,这意味着它可以嵌到 Spring 配置文件中。
管理控制台 JAR 文件(activemq-console.jar)现在可以 OSGi 包的形式部署,因此它能在开源的 ESB 容器——Apache ServiceMix 中重用。新版的 ActiveMQ 还解决了几个 bugs ,其中一些发生在高负载情况下,另一些与内存泄漏和性能有关。
去年 12 月发布的 ActiveMQ 5.0 拥有一些重要的新特性,列举如下:
-
AMQ 消息存储(AMQ Message Store)——这是一个嵌入式、事务性的消息存储,可用来进行快速、可靠的持久化。
-
消息指针(Message Cursors)是新的内存模型的一部分,当有可用的空间时(对持久化的消息使用存储指针),它可以在存储地对消息进行分页。增加该特性的目的在于解决旧版本的 ActiveMQ 中一个常见问题:当使用非持久化的消息时会导致内存溢出。
-
Blob 消息(Blob Messages):增加了一个新的 BlobMessage API 以处理客户端和 ActiveMQ 服务器之间发送的 JMS 消息中的二进制大对象(Binary Large OBjects——BLOBs)。
-
镜像队列(Mirrored Queues):增加了镜像队列特性以更加轻松地监控 ActiveMQ 容器中特定的队列上的生产者和消费者之间的消息流。这些镜像队列不用配置就可以监听 Message Broker 内的所有队列。当其可用时,镜像队列会将发送到队列中的每条消息同时发送到一个具有类似名字的 Topic;这样开发者和 web 管理员如果想查看队列上的消息交换的话,他们就可以使用镜像队列的 topic。
-
生产者流程控制(Producer Flow Control):开发者可以独立
控制共享的 JMS 连接上的每个生产者而不必挂起整个连接。
ActiveMQ 基于 Java 消息服务(Java Message Service,即 JMS)规范 1.1 版。它还集成了 Spring 框架,因此通过 Spring 可以将 ActiveMQ 容器作为一个嵌入式broker 。 可以在其站点上找到5.0 版的更多入门文档以及在企业应用中使用ActiveMQ 的一些示例。
Apache Camel 是 ActiveMQ 的一个子项目,它用来管理运行在 ActiveMQ 容器上进程的仲裁和路由活动。Camel(一个基于 Spring 的集成框架)实现了企业集成模式,从而使得开发者可以使用基于Java 的领域特定语言( Domain Specific Language ,或者叫 Fluent API)、 Scala DSL 或者 Spring 的 XML 配置文件来配置路由和仲裁规则。
查看英文原文: ActiveMQ 5.1 Supports JMS Destination Monitoring and MSMQ Bridge
评论