Spring boot 论坛项目实战_05
1. 阻塞队列【Java自带 API】
-
BlockingQueue
-
解决线程通信问题
-
阻塞方法: put、take。
-
-
生产者消费者模式【阻塞队列满足的模式】
-
生产者:产生数据的线程
-
-
-
实现类:
-
ArrayBlockingQueue【数组实现】
-
LinkedBlockingQueue【链表实现】
-
PriorityBlockingQueue、SynchronousQueue、DelayQueue等
-
2. Kafka 入门
-
早期只是一个消息队列
后续逐渐发展成综合平台
发布订阅模式
-
Kafka简介
-
Kafka是一个分布式的流媒体平台
-
应用: 消息系统、日志收集、用户行为追踪、流式处理
-
-
Kafka特点
-
对硬盘顺序读写,保证性能;集群部署,分布式保证高可靠性
-
高吞吐量、消息持久化【存储在硬盘,长久保存】、高可靠性、高扩展性
-
-
Kafka术语
-
Broker【服务器】、Zookeeper【独立软件、应用,用于管理集群】
-
Topic【用于存放消息的位置,文件夹】、Partition【对主题位置的分区】、Offset
-
(Replica:【副本,做备份用】)Leader Replica【主副本,可以相应消费者从该分区获取数据请求】、Follower Replica【随从副本,只做备份用,只从主副本获取备份】
-
配置Kafka
官网下载Kafka 的 .tar 压缩包【注意兼容自己用的 jdk 版本, jdk 11 以后用 kafka 2.6!!!】
【否则可能会出现 kafka 服务无法启动问题】
-
配置 zookeeper 的存储位置:【原始样式:Linux平台, 先修改 window 平台】
-
-
配置 Server :【修改 Kafka 日志存储位置】
3. Spring 整合 Kafka
-
引入依赖
-
spring-kafka
-
-
配置Kafka
-
配置server、consumer
-
-
访问Kafka
-
生产者
-
kafkaTemplate.send(topic, data);
-
-
消费者
-
@KafkaListener(topics = {"test"})
public void handleMessage(ConsumerRecord record){}
-
-
4. 发送系统通知
-
触发时间
-
评论后, 发布通知
-
点赞后, 发布通知
-
关注后, 发布通知
-
-
处理事件
-
封装事件对象
-
开发事件的生产者
-
开发事件的消费者
-
-
如果出现 500 错误提示, 把前文配置的kafka-logs 文件夹删除了,重启 zookeeper 和 kafka即可解决问题.
5. 显示系统通知
-
通知列表
-
显示评论、点赞、关注三种类型的通知
-
-
通知详情
-
分页显示某一类主题所包含的通知
-
-
未读消息
-