前面的文章,我们使用的是jdk自带的队列,实现了服务的吞吐量增加,但是我们知道的是,jdk的队列时基于内存的,即当请求量很大的时候,大量的请求缓存在内存当中,对于内存的要求还是很大的,不是很适合并发量很大的业务场景。尤其是在电商的场景,都会通过消息队列的削峰,解耦,从而提高系统的吞吐量,保证稳定性。所以我们接下来,继续对系统进行改进,引入kafka,进一步对于稳定性进行完善。
关于kafka的安装,介绍,集成,请参考文章开头给出的链接内的具体内容。
一、引入Kafka
引入依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.kafka/spring-kafka -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.2.10.RELEASE</version>
</dependency>
添加配置:
spring:
kafka:
bootstrap-servers: 172.16.3.29:9092
producer:
# 发生错误后,消息重发的次数。
retries: 0
# #当有多个消息需要被发送到同一个分区时,生产者会把它们放在同一个批次里。该参数指定了一个批次可以使用的内存大小,按照字节数计算。
# batch-size: 16384
# # 设置生产者内存缓冲区的大小。
# buffer-memory: 33554432
# # 键的序列化方式
key-serializer: org.apache.kafka.common.serialization.StringSerializer
# # 值的序列化方式
value-serializer: org.apache.kafka.common.serialization.StringSerializer
# # acks=0 : 生产者在成功写入消息之前不会等待任何来自服务器的响应。
# # acks=1 : 只要集群的首领节点收到消息&