先不藏私 引用一下git上的一篇文章写得非常好 我之所以再写是完全想写我们系统是怎么用的
https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/why-mq.md
1、为什么要用消息队列
核心三点 解耦 异步 削峰
我们系统用消息队列 是因为需要在一个单子审批通过以后传递报文给ERP接口。由于传递报文耗时因此使用消息队列。异步的作用将报文存储在队列中,消费者从队列中取报文,再进行业务处理。这样的话前端就不用等待业务系统处理报文了,ERP系统还是一个第三方的用友系统,还不是自己的系统,可想而知处理会多慢,不然用户会一直等待转圈圈。
那么一个合格的面试官肯定会问 消息传递失败怎么办 业务处理失败怎么办 等等拷问后面会深入解答。
2、消息队列有哪两种传递模式
这是最基本的问题了
它一般有两种传递模式:点对点(P2P, Point-to-Point) 模式和发布/订阅 (Pub/Sub) 模式。点对点模式是基于队列的,消息生产
发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。
布订阅模式定义了如何向 个内容节点发布和订阅消息,这个内容节点称为主题 (topic) ,主
题可以认为是消息传递的中介,消息发布者将消息发布到某个主题,而消息订阅者则从主题中
订阅消息。主题使得消息的订阅者与消息的发布者互相保持独立,不需要进行接触即可保证消
息的传递,发布/订阅模式在消息的一对多广播时采用。
3、rabbitmq消息丢失及应对解决方案