IT评测·应用市场-qidao123.com技术社区

标题: 黑马点评 利用Kafka替换Redis消息队列 [打印本页]

作者: 笑看天下无敌手    时间: 2025-4-10 05:39
标题: 黑马点评 利用Kafka替换Redis消息队列
Redis Stream不仅利用起来不如Kafka方便,而且对于流量更大的场景,其性能也不如Kafka。因此利用Kafka来实现秒杀场景的异步读取是一个非常不错的选择。
一. 配置Kafka

要利用Kafka,首先需要添加依赖:
  1. <dependency>
  2.     <groupId>org.springframework.kafka</groupId>
  3.     <artifactId>spring-kafka</artifactId>
  4. </dependency>
复制代码
然后对application.yaml文件进行配置:
  1.   spring:
  2.     kafka:
  3.     bootstrap-servers: localhost:9092
  4.     consumer:
  5.       group-id: voucher-order-group
  6.       auto-offset-reset: earliest
  7.       key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
  8.       value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
  9.       properties:
  10.         spring.json.trusted.packages: "com.hmdp.entity"
  11.     producer:
  12.       key-serializer:  org.apache.kafka.common.serialization.StringSerializer
  13.       value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
复制代码
提前在Kafka中利用命令行创建一个”voucher-orders“的topic。固然也可以利用IDEA中的插件,如许更方便。以下展示命令行创建:
  1. ~/kafka-topics.sh --create --topic voucher-orders --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
复制代码
这里我利用的参数都是默认值。如果想要模仿真实环境,还可以手动配置一些参数。
到此Kafka的配置就完成了。

二. 利用Kafka替换Redis

接下来进行对源代码的改造。
1. 删除Redis消息队列的逻辑

首先与Redis消息队列的所有代码都可以删除:
  1. private final ExecutorService SECKILL_ORDER_EXECUTOR = Executors.newSingleThreadExecutor();
  2.     // 需要引入AspectJWeaver依赖
  3.     // 需要给启动类加上@EnableAspectJAutoProxy(exposeProxy = true)的注解
  4.     private IVoucherOrderService proxy;
  5.     @PostConstruct // @PostC
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4