****消息中间件****RabbitMQ
1.1.为什么使用消息队列、应用场景、常见的消息中间件有?
用于实现分布式系统模块与模块之间的消息通讯。
原理:原理就是生产者生产消息,把消息发送给activemq。Activemq接收到消息,然后查看有多少个消费者,然后把消息转发给消费者,此过程中生产者无需参与。消费者接收到消息后做相应的处理和生产者没有任何关系。
主要作用:****应用解耦********、********异步处理、流量削锋********、********消息通讯****
应用场景:
1、用户注册的时候,重点内容是将用户信息保存到数据库中,发短信验证或者是发邮件增加了业务的复杂度。这时使用MQ将发短信、发邮件通知MQ由另外的服务平台完成。
2、搜索平台、缓存平台
查询数据,建立缓存,不从数据库查询,从缓存查询,当数据库发生增加、修改、删除操作时发消息给MQ,缓存平台从MQ获取到这个消息,更新缓存。
ActiveMQ使用的是标准的生产者(完成生产消息并发送消息)和消费者(获取消息,完成自己的业务逻辑)模型
常见消息中间件:
ActiveMQ、RabbitMQ、RocketMQ、Kafka
1.2.使用了消息队列会有什么缺点
*·* ****系统可用性降低:****系统引入的外部依赖越多,越容易挂掉,本来其他系统只要运行好好的,那你的系统就是正常的。现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用