一、问题简单描述,消息中间件使用的是kafka,消费者接收消息,发起restmplate同步请求,接收返回的数据入库。
优化方案思考:
kafka配置:
spring:
kafka:
bootstrap-servers: localhost
template:
default-topic: update-test
consumer:
# 指定默认消费者group id
group-id: default-group
# 一次最多拉取消息的数量
max-poll-records: 1
# 最早未被消费的offset, 若设置为earliest,那么会从头开始读partition
auto-offset-reset: earliest
listener:
# 拉取消息类型:SINGLE、BATCH
type: SINGLE
# 指定listener 容器中的线程数,用于提高并发量
concurrency: 10
properties:
max:
poll:
interval:
ms: 600000
配置中观察到是单次拉取的,后面改成批量拉取,发现速度没什么变化,于是观察消费者处理的代码逻辑,发现会执行restmplate同步请求,而每次请求都有几秒的耗时,于是想加快消费者处理速度,于是实现了AsyncConfigurer
@Slf4j
@Configuration
public class ProcessorAsyncConfig implements AsyncConfigurer {
@Ov