自己关于MQ的一些理解和整理

1. 名词解释

  • MQ:message queue,我们一般称作消息中间件或者消息队列,主要功能之一是解除或降低项目的耦合,降低服务器的压力

  • JMS:消息中间件的规范,属于一种API市面上RabbitMQ,RocketMQ等中间件均实现了这种规范

  • 消息/message:一般指的是在MQ中传输的数据,有多种类型,可以是一个id或一个对象

  • point-to-point:点对点,ActiveMQ消息的传递方式之一,传递特点:一个或多个生产者发送消息时,无论有几个消费者,能够抓取到所有生产者的消息的只有一个,一般能抓取的消费者是最先启动的。
    eg:线段 在这里插入图片描述

  • 发布/订阅,ActiveMQ消息的传递方式之一,传递特点:一个或多个生产者发送消息时,如果有多个消费者,则每一个消费者都能够抓取到生产者的消息,但是在生产者发送消息时消费者必须在活跃/运行状态。
    eg:内网通接收文件
    在这里插入图片描述

  • topic:主题,存储消息的容器之一,使用topic存储消息即使用点对点(point-to-point)的方式传递消息

  • queue:队列,存储消息的容器之一,使用queue存储消息即使用发布-订阅(publish/subscribe)的方式传递消息

  • producer:消息生产者,由producer从程序中获取消息,并传输到queue或topic中,等待消费者提取

  • .customer:消息消费者,监听现有的queue或topic,发现有新的消息就可以抓取过来进行操作

2. JMS规定的消息类型

  • TextMessage:一个字符串对象

  • MapMessage:一套名称-值对

  • ObjectMessage:一个序列化的 Java 对象

  • BytesMessage:一个字节的数据流

  • StreamMessage:Java 原始值的数据流

3. 常见的几种消息中间件

  • ActiveMQ:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持-JMS1.1和J2EE 1.4规范的 JMS Provider实现,默认的协议是STOMP

  • RabbitMQ:使用Erlang语言编写,支持多种场景。支持多种协议,如:AMQP,XMPP, SMTP,STOMP。默认协议是AMQP,,也正是如此,使的它变的非常重量级,更适合于企业级的开发。淘宝的MySQL集群内部有使用它进行通讯,OpenStack开源云平台的通信组件,最先在金融行业得到运用。

  • RocketMQ:阿里旗下开源的分布式,队列模型的消息中间件,原名MetaQ,3.0之后改名,是阿里参照kafka设计思想使用java实现的一套mq

  • ZeroMQ:据说是史上最快的消息队列系统

  • Kafka:Apache下的一个子项目 。特点:高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。适合处理海量数据。

3. 各个中间件的区别

  • 语言支持

    • ActiveMQ:支持,java优先

    • RabbitMQ:与语言无关

    • RocketMQ:只支持java

    • Kafka:支持,java优先

  • 单机吞吐量:万级

    • ActiveMQ:万级

    • RabbitMQ:万级

    • RocketMQ:十万级

  • 消息延迟:

    • ActiveMQ:毫秒级

    • RabbitMQ:微秒级

    • RocketMQ:毫秒级

  • 社区活跃度

    • ActiveMQ:高

    • RabbitMQ:高

    • RocketMQ:中

  • 商业支持

    • ActiveMQ:无

    • RabbitMQ:无

    • RocketMQ:阿里云

  • 支持的协议

    • ActiveMQ:OpenWire,STOMP,REST,XMPP,AMQP

    • RabbitMQ:AMQP

    • RocketMQ:自己定义的协议

  • 持久化方式

    • ActiveMQ:内存、文件、数据库

    • RabbitMQ:内存、文件

    • RocketMQ:磁盘文件

  • 部署方式

    • ActiveMQ:嵌入,独立

    • RabbitMQ:独立

    • RocketMQ:独立

  • 开发语言

    • ActiveMQ:java

    • RabbitMQ:erlang

    • RocketMQ:java

4. 常用使用场景

  • 异步

  • 削峰

  • 解耦

如有不足和错误,还请指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值