# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
思路和场景都有了,这里就不在代码中练习了,因为练习价值不高(视频中无并发冲突考虑)