在项目编写中通常会有这样的问题(为什么需要MQ):
1.多个模块之间耦合过高,导致一个模块宕机之后,全部的模块都无法使用了。
2.同步通信的成本过高问题。
如下图中:添加操作只需要0.1秒就可以解决,但是需要多花0.6秒
去处理其他模块,而且由于是同步进行的,一旦其中有一个模块宕机后边的操作就会一直等待,
为了解决上述问题就需要MQ。
RAbbitMQ架构:
先来介绍RabbitMQ中的成员
Producer(生产者):将消息发送到Exchange
Exchange(交换器)∶将从生产者接收到的消息路由到QueueQueue(队列):存放供消费者消费的消息
BindingKey(绑定键):建立Exchange与Queue之间的关系(个人看作是一种规则,也就是Exchange将什么样的消息路由到Queue)
RoutingKey(路由键): Producer发送消息与路由键给Exchange,Exchange将判断RoutingKey是否符合BindingKey,如果符合则将该消息路由到绑定的Queue
Consumer(消费者):从Queue中获取消息
上述问题就可以使用MQ解决
客户模块添加完成之后发布一个消息到MQ中,其他模块去监听MQ中某一的队列,一旦接收到那个消息,就确定客户模块已经完成添加操作,而我的其他模块可以开始工作