# 171. 商品详情页动态渲染系统:吞吐量优化之批量调用依赖服务接口

找到优化的地方和场景,比如下面这个位置

private void processBrandDataChangeMessage(ProductEvent productEvent) {
    Long id = productEvent.getId();
    String eventType = productEvent.getEventType();

    if ("add".equals(eventType) || "update".equals(eventType)) {
        // 这里单个的调用,视频中是放在一个 list 中的,当大于 20 条的时候,就批量请求一次接口
        // 当然对应的服务需要提供批量查询接口。
        // 然后再单个放到 redis 中
        JSONObject dataJSONObject = JSONObject.parseObject(eshopProductService.findBrandById(id));
        redisTemplate.opsForValue().set("brand_" + dataJSONObject.getLong("id"), dataJSONObject.toJSONString());
    } else if ("delete".equals(eventType)) {
        redisTemplate.delete("brand_" + id);
    }
    DimEvent dimEvent = new DimEvent("brand", id);
//        rabbitMQSender.send(AGGR_DATA_CHANGE_QUEUE, JSON.toJSONString(dimEvent));
    dimDataChangeEventSet.add(JSON.toJSONString(dimEvent));
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

思路和场景都有了,这里就不在代码中练习了,因为练习价值不高(视频中无并发冲突考虑)