当前位置: 首页 > news >正文

docker安装Kafka,SpringBoot整合Kafka

#拉取镜像
docker pull wurstmeister/zookeeper
#运行容器
docker run --restart=always --name zookeeper -p 2181:2181 \
-v /etc/localtime:/etc/localtime -d wurstmeister/zookeeper#拉取镜像
docker pull wurstmeister/kafka#运行容器
docker run --restart=always --name kafka -p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.56.1:2181/kafka \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.56.1:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-v /etc/localtime:/etc/localtime -d wurstmeister/kafka# 这里将8088映射到容器的8080端口,因为ui默认是从8080启动的,否则不能访问UI界面
docker run --name=kafka-ui \
-e KAFKA_CLUSTERS_0_NAME=kafka-cluster-name \
-e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=192.168.168.160:9092 \
-p 8088:8080 \
-d provectuslabs/kafka-ui:latest
SpringBoot整合Kafka
  1. 引入依赖
    <!-- Kafka 相关依赖 --><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency>
  1. 配置文件:
    在application.properties文件中添加Kafka的相关配置。
spring:kafka:bootstrap-servers: localhost:9092consumer:group-id: article-groupkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializerproducer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializer
  1. 编写生产者(这是使用Kafka实现双写一致性的示例代码,更新完数据就将实体id发给Kafka)
    @Overridepublic ResponseResult updateArticleByKafka(ApArticle article) {// 修改数据库apArticleMapper.updateById(article);// 通过Kafka去通知更新缓存kafkaTemplate.send("article-events",article.getId()+"");return ResponseResult.okResult();}
  1. 编写消费者(在消费者中直接对这个id的数据进行删除缓存处理,再次查询这个数据自然会重建缓存)
@Component
@Slf4j
public class ArticleUpdateCacheKafkaConsumerListener {@Autowiredprivate RedisTemplate<String,Object> redisTemplate;@KafkaListener(topics = "article-events")public void receiveMessage(String message) {// 根据获得的数据去删除缓存redisTemplate.delete(ARTICLE_KEY + message);log.debug("Received message: " + message);}}
http://www.lryc.cn/news/216500.html

相关文章:

  • MySQL - InnoDB 的事务支持、锁机制
  • Android Studio的笔记--Module新建和使用
  • Git统计个人提交代码行数
  • Collction的List方法,list特有方法,遍历方式,迭代器选择
  • 奇偶校验码和循环冗余码
  • Recommender System复习(考试向)
  • SpringBoot绑定配置文件中变量的四种方式-解析
  • linux 安装 elasticsearch 全教程
  • 更快更准 | YOLOv3算法超详细解析(包括诞生背景+论文解析+技术原理等)
  • 【ChatGPT】教我 Flyweight(享元) 模式
  • 双十一越来越早,公域电商何去何从——深度解析
  • 区块链中的 “不可能三角,技术性ppt突出关键技术点,数据交易-安全问题
  • [Docker]五.Docker中Dockerfile详解
  • react使用react-sortable-hoc实现拖拽
  • 实习日常的点点滴滴记录(Spring Boot的核心注解)------慢慢积累,厚积薄发(要学的东西还好多,加油!))(知识和实践的结合)
  • 第 04 章_逻辑架构
  • 免费API接口资源推荐
  • LuatOS-SOC接口文档(air780E)--miniz - 简易zlib压缩
  • 一整套智慧工地源码,劳务实名制、施工安全管理、绿色施工、危大工程设备监测、视频AI识别功能
  • 世微 DC-DC平均电流双路降压恒流驱动器 LED车灯AP2813
  • ES6~ES13新特性(一)
  • 基于 Amazon EC2 和 Amazon Systems Manager Session Manager 的堡垒机的设计和自动化实现
  • RFID管理方案有效提升电力物资管理效率与资产安全
  • leetcode:389. 找不同
  • c 函数调用过程中,调用函数的栈帧一旦被修改,被调用函数则无法正确返回。( X )
  • 专为个人打造专注工作的便签APP工具推荐哪个
  • 代码随想录算法训练营第四十二天 | LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474. 一和零
  • Windows PowerShell 和 Linux BashShell 极简对比
  • 校验验证码是否过期(定时刷新验证码)
  • windows idea本地执行spark sql避坑