消息队列的好处:
1.系统异步通信:例如注册用户把消息写入消息队列,发送注册邮件,发送注册短信,异步的方式去消息队列分别读
2.扩展解耦能力:传统是订单系统直接调用库存系统,消息队列是订单系统写入消息队列,库存系统再去消息队列读
3.流量削峰:例如1W用户发送请求,消息队列设定1000定长,剩余的没有抢到座位的请求,立即抛弃请求,响应失败
消息队列的概念:
由消息代理和目的地组成,目的地主要是队列(点对点)和主题(发布订阅),二种形式:
1.点对点:消息发送者发送消息,消息代理将其放入一个队列,接收者从消息队列获取到消息后,消息被移除队列,
即消息只有唯一的发送者和接受者,但不是唯一的接收者
2.发布订阅:发送者发送消息到主题,多个接收者订阅这个主题,都会受到消息
消息代理的规范:
1.JMS(JAVA消息服务):基于JVM消息代理的规范,ActiveMQ、HornetMQ是JMS实现
2.AMQP:高级消息队列协议,兼容JMS,RabbitMQ是AMQP的实现
区别如下图:
在java中的支持是如下图: