乐优商城(二十六)——RabbitMQ及数据同步
四、项目改造
改造项目,实现搜索服务、商品静态页的数据同步。
4.1 思路分析
发送方:商品微服务
-
什么时候发?
当商品服务对商品进行写操作:增、删、改的时候,需要发送一条消息,通知其它服务。
-
发送什么内容?
对商品的增删改时其它服务可能需要新的商品数据,但是如果消息内容中包含全部商品信息,数据量太大,而且并不是每个服务都需要全部的信息。因此只发送商品id,其它服务可以根据id查询自己需要的信息。
接收方:搜索微服务、静态页微服务
接收消息后如何处理?
-
搜索微服务:
-
增/改:添加新的数据到索引库
-
删:删除索引库数据
-
-
静态页微服务:
-
增:创建新的静态页
-
删:删除原来的静态页
-
改:创建新的静态页并删除原来的
-
4.2 商品服务发送消息
4.2.1 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
4.2.2 配置文件
在application.yml中添加一些有关RabbitMQ的配置:
-
template:有关
AmqpTemplate
的配置-
retry:失败重试
-
enabled:开启失败重试
-
initial-interval:第一次重试的间隔时长
-
max-interval:最长重试间隔,超过这个间隔将不再重试
-
multiplier:下次重试间隔的倍数,此处是2即下次重试间隔是上次的2倍
-
-
exchange:缺省的交换机名称,此处配置后,发送消息如果不指定交换机就会使用这个
-
-
publisher-confirms:生产者确认机制,确保消息会正确发送,如果发送失败会有错误回执,从而触发重试