消息队列的消息管理器RabbitMQ
2018-08-23 15:28
106 查看
为什么出现消息队列?以及解决的问题?**
1.1.搜索与商品服务的问题**
目前我们已经完成了商品详情和搜索系统的开发。我们思考一下,是否存在问题?
- 商品的原始数据保存在数据库中,增删改查都在数据库中完成。
- 搜索服务数据来源是索引库,如果数据库商品发生变化,索引库数据不能及时更新。
- 商品详情做了页面静态化,静态页面数据也不会随着数据库商品发生变化。
如果我们在后台修改了商品的价格,搜索页面和商品详情页显示的依然是旧的价格,这样显然不对。该如何解决?
这里有两种解决方案:
- 方案1:每当后台对商品做增删改操作,同时要修改索引库数据及静态页面
- 方案2:搜索服务和商品页面服务对外提供操作接口,后台在商品增删改后,调用接口
以上两种方式都有同一个严重问题:就是代码耦合,后台服务中需要嵌入搜索和商品页面服务,违背了微服务的独立原则。
所以,我们会通过另外一种方式来解决这个问题:消息队列
消息队列(MQ):
消息队列是典型的:生产者、消费者模型。生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收,没有业务逻辑的侵入,这样就实现了生产者和消费者的解耦。
结合前面所说的问题:
- 商品服务对商品增删改以后,无需去操作索引库或静态页面,只是发送一条消息,也不关心消息被谁接收。
- 搜索服务和静态页面服务接收消息,分别去处理索引库和静态页面。
如果以后有其它系统也依赖商品服务的数据,同样监听消息即可,商品服务无需任何代码修改。
- Fanout:广播,将消息交给所有绑定到交换机的队列
- Direct:定向,把消息交给符合指定routing key 的队列
- Topic:通配符,把消息交给符合routing pattern(路由模式) 的队列
下载安装去官网: 记写:2018-8-23 学者:dkang阅读更多
相关文章推荐
- Linux 下开源消息队列系统 RabbitMQ 安装使用
- 消息队列 RabbitMQ 与 Spring 整合使用
- SpringBoot中如何监听两个不同源的RabbitMQ消息队列
- (二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念
- (十)RabbitMQ消息队列-高可用集群部署实战
- 消息队列基础 RabbitMQ与AMQP协议详解——超大规模高可用OpenStack核心技术深入解析系列(二)
- Spring整合RabbitMQ进行消息队列开发
- 消息队列 RabbitMQ
- 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍
- RabbitMQ消息队列(九):Publisher的消息确认机制
- RabbitMQ消息队列(一)简单介绍
- RabbitMQ消息队列的小伙伴: ProtoBuf(Google Protocol Buffer)
- 使用rabbitmq消息队列
- 消息队列rabbitmq安装及php扩展安装
- RabbitMQ消息队列(二):”Hello, World“
- RabbitMQ消息队列(五): 主题分发
- C#中使用RabbitMQ收发队列消息
- RabbitMQ消息队列名词解释[转]
- RabbitMQ消息队列(四):分发到多Consumer(Publish/Subscribe)
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍