商城项目第六天之数据同步(广告缓存+商品上架索引导入)及BUG - 2021-09-19

笔记很零散, 除了我别人可能看不懂, 建议别浪费时间!!!!

电商商城项目第六天之数据同步解决方案:

一.  首页广告缓存更新:

1. 思路: 

   (1). index.html发出ajax请求本地缓存 - 访问openresty - nginx - ad_read.lua文件 - 读取redis缓存

   (2).  canal监控数据库 -- 发送到rabbitmq -- OkHttpClient调用 -- 更新缓存到redis

   如下图: 

 

2. 重点: service_business微服务,  监听广告更新消息 - 远程调用ad_updata.lua更新缓存 

   (1). 思路: 数据库数据发生改变, AdListener访问url地址 - 经过nginx - 访问 ad_update.lua文件 - lua文件读取mysql再更新缓存到redis  

   (2). 例子: 网站空闲时间更新缓存

//核心代码
@Component
public class AdListener {
    @RabbitListener(queues = "ad_update_queue")
    public void receiveMessage(String message){
        System.out.println("接收到的消息为:"+message);
        //发起远程调用
        OkHttpClient okHttpClient = new OkHttpClient();
        String url = "http://192.168.200.128/ad_update?position="+message;
        Request request = new Request.Builder().url(url).build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                //请求失败
                e.printStackTrace();
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                //请求成功
                System.out.println("请求成功:"+response.message());
            }
        });
    }
}

3. 注意:

        当本地缓存openresty - nginx中有缓存时, 数据库更新的数据不会被读取到, 此时重启openresty:   linux命令: systemctl restart openretsty 

二. 商品上架索引导入数据库:

1.需求: 商品上架将商品的sku列表导入或更新索引库(Chrome插件ElasticSearch Header)

2.思路: 

  (1). 商品上架(is-marketable) - canal监听数据库 - 拿到商品spu - 发送消息队列到mq - 搜索服务(service_search)拿到消息spu - 根据spu查询sku集合 - 用search api存入索引库

  (2). 根据spu查询sku:  service_goods微服务中有查询方法, 需要提供feign接口远程调用得到sku列表

三. 两个BUG:

1. feign.FeignException: status 404 reading SkuFeign#findSkuListBySpuId(String)

  原因: feign远程调用路径出错:  

  解决办法:  删除 @RequestMapping(/sku)

  报错如图: 

   修改如图:

2. channel shutdown channel error: reply-text=NOT_FOUND - no exchange ‘topicExchage’ in vhost ‘/’, class-id=60, method-id=40)

  原因: 如下图: 交换机名称出错   

  解决:  如下图: 更改spu监听器的交换机名称. 

  更改前:

  更改后:

 四. 注意:

   导入索引库ElasticSearch Header时, 因为数据量大加载较慢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值