消息队列简介
消息队列,也叫消息中间件。消息的传输过程中保存消息的容器。
消息队列都解决了什么问题?
1、异步
2、并行
3、解耦
4、排队
5 弊端:不确定性和延迟
消息模式
点对点
订阅
消息队列工具 ActiveMQ
1 、简介
同类产品: RabbitMQ 、 Kafka、Redis(List)
对比RabbitMQ
性能伯仲之间,基本上可以互相替代。最主要区别是二者的协议不同RabbitMQ的协议是AMQP(Advanced Message Queueing Protoco),而ActiveMQ使用的是JMS(Java Messaging Service )协议。
JMS是针对Java体系的传输协议,队列两端必须有JVM,所以如果开发环境都是java的话推荐使用ActiveMQ,可以用Java的一些对象进行传递比如Map、BLob、Stream等。
AMQP通用行较强,非java环境经常使用,传输内容就是标准字符串。
RabbitMQ用Erlang开发,安装前要装Erlang环境,比较麻烦。ActiveMQ解压即可用不用任何安装。
对比KafKa
Kafka性能超过ActiveMQ等传统MQ工具,集群扩展性好。
弊端是:
在传输过程中可能会出现消息重复的情况,不保证发送顺序
一些传统MQ的功能没有,比如消息的事务功能。所以通常用Kafka处理大数据日志。
对比Redis
其实Redis本身利用List可以实现消息队列的功能,但是功能很少,而且队列体积较大时性能会急剧下降。对于数据量不大、业务简单的场景可以使用。