1.1 主流消息中间件介绍——ActiveMQ

消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。今天主要来介绍了下几大主流消息中间件的区别与联系。

ActiveMQ是由Apache出品,ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现。它非常快速,支持多种语言的客户端和协议,而且可以非常容易的嵌入到企业的应用环境中,并有许多高级功能。

1 特点

ActiveMQ
  • ActiveMQ是Apache出品,最流行的,能力强劲的开源消息总线,并且它是一个完全支持JMS规范的消息中间件
  • 其丰富的API、多种集群构建模式使得他成为业界老牌消息中间件,在中小型企业中应用广泛!
  • MQ衡量指标:服务性能、数据存储、集群架构。

ActiveMQ现在用的比较少,因为ActiveMQ相比其他的MQ的性能来说比较一般。现如今高并发、大数据的应用场景随处可见。如果这时候在MQ的选择上,那么ActiveMQ就显得力不从心了。

衡量一个MQ的指标,主要有三个方面:服务性能、数据存储、集群架构

 

  • 服务性能:ActiveMQ的性能不是特别好,面对超大规模并发时候,总是会出现各种各样的小问题,比如阻塞,消息堆积过多,产生一些延迟等等一些问题。
  • 数据存储:ActiveMQ默认采用KahaDB内存存储方式。也可以采用一些高性能的存储方式,比如:google的LevelDb 基于内c存的。如果是为了保证消息的可靠,也可以采用mysql或者oracle数据库。
  • 集群架构:ActiveMQ流行那么多年,与其他组件集成的Api也是十分完善的。如果不是特别大的并发场景下,ActiveMQ也是一个不错的选择。因为ActiveMQ的集群架构模式也是十分好。

2 ActiveMQ架构模式

ActiveMQ架构模式
Masrer-Slave模式

主备模式,利用Zookeeper进行两个或多个节点的协调。其中的主节点是对外提供服务的,而另外的从节点启动着,但是不对外提供服务。当主节点挂掉,利用Zookeeper进行一个高可用的切换,将Salve节点切换成主节点,继续对外提供服务。

NetWork模式

本质是两组主备模式的集成,中间用NewWork网关,做一个连接配置,就可以实现分布式集群。

3 ActiveMQ小结

ActiveMQ优点:
  • 跨平台(JAVA编写与平台无关,ActiveMQ几乎可以运行在任何的JVM上)
  • 可以用JDBC:可以将数据持久化到数据库。虽然使用JDBC会降低ActiveMQ的性能,但是数据库一直都是开发人员最熟悉的存储介质
  • 支持JMS规范:支持JMS规范提供的统一接口
  • 支持自动重连和错误重试机制
  • 有安全机制:支持基于shiro,jaas等多种安全配置机制,可以对Queue/Topic进行认证和授权
  • 监控完善:拥有完善的监控,包括WebConsole,JMX,Shell命令行,Jolokia的RESTful API
  • 界面友善:提供的WebConsole可以满足大部分情况,还有很多第三方的组件可以使用,比如hawtio
ActiveMQ缺点:
  • 社区活跃度不及RabbitMQ高
  • 根据其他用户反馈,会出莫名其妙的问题,会丢失消息
  • 目前重心放到activemq6.0产品Apollo,对5.x的维护较少
  • 不适合用于上千个队列的应用场景
版权声明: 本文为智客工坊「琦彦 」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""