乐优商城(二十六)——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的配置:

乐优商城(二十六)——RabbitMQ及数据同步

  • template:有关AmqpTemplate的配置

    • retry:失败重试

      • enabled:开启失败重试

      • initial-interval:第一次重试的间隔时长

      • max-interval:最长重试间隔,超过这个间隔将不再重试

      • multiplier:下次重试间隔的倍数,此处是2即下次重试间隔是上次的2倍

    • exchange:缺省的交换机名称,此处配置后,发送消息如果不指定交换机就会使用这个

  • publisher-confirms:生产者确认机制,确保消息会正确发送,如果发送失败会有错误回执,从而触发重试

4.2.3 改造GoodsService

4.3 搜索服务接收消息

4.3.1 引入依赖

4.3.2 添加配置

4.3.3 编写监听器

4.3.4 编写创建和删除索引的方法

4.4 静态页服务接收消息

4.4.1 引入依赖

4.4.2 添加配置

4.4.3 编写监听器

4.4.4 添加删除页面方法

4.5 测试

4.5.1 查看RabbitMQ控制台

4.5.2 修改数据

4.5.3 结果