盘丝洞的感悟:ActiveMQ

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 05:34:02
    开源的企业消息服务供应者Apache ActiveMQ最近发布了5.1版,该版本在message broker的稳定性和性能上进行了很多改进。它还支持目的地监控、对消息按优先级排序,通过新的msmq传输组件实现的Microsoft Message Queue(MSMQ)到ActiveMQ的桥。

    开源的企业消息服务供应者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配置文件来配置路由和仲裁规则。