Spring boot 论坛项目实战_05

Kafaka, 构建TB级异步消息系统

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【随从副本,只做备份用,只从主副本获取备份】

  • 参考网站:http://kafka.apache.org

配置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. 显示系统通知

  • 通知列表

    • 显示评论、点赞、关注三种类型的通知

  • 通知详情

    • 分页显示某一类主题所包含的通知

  • 未读消息

    • 在页面头部显示所有的未读消息数量

原文地址:https://www.cnblogs.com/77-is-here/p/13701947.html