ActiveMQ概述及其它消息中间件对比

一、概述
   作用:异步消费数据,异步发邮件,异步查询操作
   当前远程调用等许多框架rpc技术广泛应用,但面对大规模和复杂度都越来越高的分布式系统,这些技术有以下局限性:
   1、同步通信:客户发出调用后,必须等待服务对象完成处理并返回结果才能断续执行。
   2、客户和服务对象的生命周期紧密耦合:客户端和服务端都必须正常运行,如遇服务对象崩溃或网络故障导致客户端的请求不可达,客户端会接收到异常。
   3、点对点通信:客户的一次调用只发送给某单个目标对象。
   面向消息的中间件(Message Oriented Middleware,MOM)较好的解决了以上问题,发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息发给接收者。

   JAVA消息服务(JMS)定义了JAVA中访问消息中间件的接口。JMS只是接口,并没有给予实现。实现JMS接口的消息中间件称为JMS Provider,已有的MOM系统包括Apache的ActiveMqQ,阿里巴巴RocketMQ,IBM的MQServices,Microsoft的MSMQ,BEA的MessageQ,RabbitMQ等。都遵循JMS规范。


二、JMS实现接口的消息中间件

  Provider(MessageProvider):生产者
  Consumer(MessageConsumer):消费者
  P2P:Point to point,点对点消息模型
  Pub/Sub:Publish/Subscribe,发布/订单消息模型
  Queue:队列目标
  Topic:主题目标
  ConnectionFactory:连接工厂,JMS用它创建连接
  Connection:JMS客户端到JMS Provider的连接
  Destination:消息的目的地
  Session:会话,一个发送或接收消息的线程

三、JMS定义了五种不同的消息正文格式
  StreamMessage Java原始值的数据流
  MapMessage   Map类型键值对
  TextMessage  字符串对对象
  ObjectMessage 序列化的Java对象
  BytesMessage 未解释字节的数据流


四、各消息中件间对比
  1、rocketMQ:经过阿里双十一检测,具有高吞吐量和大数据处理能力。(不开源)
  2、rabbitMQ:性能不错,数据高可靠,支持集群。
     Kafka:性能高,吞吐量大。主要利用pageCache,将数据存储到内存中。并不是采用持久化方式(数据落地方式、刷盘方式)来保证数据的可靠性,而是使用replicate(在内存中保存多份数据)来保证高可用。可能会产生少量数据丢失。
  3、activeMQ:IO支持随机和顺序读写,满足80%以上的场景KahaDB,LevelDB,MYSql等。

猜你喜欢

转载自javafu.iteye.com/blog/2376991