首页 > 其他分享 >SpringBoot集成Kafka快速启动示例

SpringBoot集成Kafka快速启动示例

时间:2024-07-08 16:24:23浏览次数:17  
标签:multi SpringBoot 示例 分区 Kafka topic group2 consumer partitions

源码地址: https://github.com/ghdefe/kafka-demo

kafka消息发送接收示例

1. 启动kafka实例

cat << EOF > docker-compose.yml
version: "2"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
      - "2180:8080"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:3.2
    ports:
      - "9092:9092"
    environment:
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_MAX_REQUEST_SIZE=1195725856
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
    depends_on:
      - zookeeper
EOF

docker-compose up -d

2. 启动消费者

消费者主要代码: com/example/consumer/service/MsgConsumer.java, 消费者启动类: com/example/consumer/ConsumerApplication.java.

测试消息均衡分配效果需要启动多个消费者实例,因此在IntelliJ Idea中右上角, 启动配置中配置Allow multiple instances, 就可以多次点击启动按钮启动多个消费者实例.

3. 启动生产者

生产者配置: com/example/producer/config/TopicConfiguration.java, 在这里定义了multi-topic主题的分区数为4,用于测试消息均衡效果.

生产消息: 运行此类可发送1条消息到single-topic和1000条消息到multi-topic. com/example/producer/service/MsgProducerTest.java

笔记

消费者组中的成员会自动被分配分区, 消费组中的成员自动均衡地分配所有的分区. 例如:
multi-topic有4个分区.

  • 启动第一个消费者实例时, 会打印以下内容:
2024-07-08T15:46:19.578+08:00  INFO 21836 --- [consumer] [ntainer#2-0-C-1] k.c.c.i.ConsumerRebalanceListenerInvoker : [Consumer clientId=consumer-consumer-0, groupId=consumer-group2] Adding newly assigned partitions: multi-topic-0, multi-topic-1, multi-topic-2, multi-topic-3
2024-07-08T15:46:19.604+08:00  INFO 21836 --- [consumer] [ntainer#2-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : consumer-group2: partitions assigned: [multi-topic-0, multi-topic-1, multi-topic-2, multi-topic-3]

可见consumer-group2分配了4个分区: multi-topic-0, multi-topic-1, multi-topic-2, multi-topic-3.

  • 接着启动第二个消费者实例

第一个消费者打印日志

2024-07-08T15:51:42.526+08:00  INFO 21836 --- [consumer] [ntainer#2-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : consumer-group2: partitions revoked: [multi-topic-0, multi-topic-1, multi-topic-2, multi-topic-3]
2024-07-08T15:51:42.602+08:00  INFO 21836 --- [consumer] [ntainer#2-0-C-1] k.c.c.i.ConsumerRebalanceListenerInvoker : [Consumer clientId=consumer-consumer-0, groupId=consumer-group2] Adding newly assigned partitions: multi-topic-0, multi-topic-1
2024-07-08T15:51:42.607+08:00  INFO 21836 --- [consumer] [ntainer#2-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : consumer-group2: partitions assigned: [multi-topic-0, multi-topic-1]

第二个消费者打印日志

2024-07-08T15:51:42.602+08:00  INFO 21276 --- [consumer] [ntainer#1-0-C-1] k.c.c.i.ConsumerRebalanceListenerInvoker : [Consumer clientId=consumer-consumer-0, groupId=consumer-group2] Adding newly assigned partitions: multi-topic-2, multi-topic-3
2024-07-08T15:51:42.612+08:00  INFO 21276 --- [consumer] [ntainer#1-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : consumer-group2: partitions assigned: [multi-topic-2, multi-topic-3]

可见在第二个消费者启动时, 会触发分区重新分配

  • 第一个消费者先撤销现有4个分区分配, 然后重新获取分配的分区, 最终绑定分区: multi-topic-0, multi-topic-1
  • 第二个消费者获取分配的分区, 最终绑定分区: multi-topic-2, multi-topic-3
    可见: 消费组中的成员自动均衡地分配所有的分区.

标签:multi,SpringBoot,示例,分区,Kafka,topic,group2,consumer,partitions
From: https://www.cnblogs.com/xiaojiluben/p/18290115

相关文章

  • 免费分享一套SpringBoot+Vue超市(进销存,收银,积分)管理系统【论文+源码+SQL脚本】,帅呆
    大家好,我是java1234_小锋老师,看到一个不错的SpringBoot+Vue超市(进销存,收银,积分)管理系统,分享下哈。项目介绍本论文设计并实现了一套基于SpringBoot、Vue和MySQL的超市管理系统。该系统旨在通过现代化的Web应用技术提升超市管理效率和用户体验。首先,通过详细的需求分析和功......
  • java springboot监听事件和处理事件
    在SpringBoot中,监听和处理事件是一种常用的模式,用于在应用程序的不同部分之间传递信息。Spring的事件发布/订阅模型允许我们创建自定义事件,并在这些事件发生时由注册的监听器进行处理。这里,我将提供一个简单的SpringBoot应用程序示例,其中将包括事件的定义、事件的发布以及事件......
  • javab毕业设计-基于Java的校园二手交易商城系统设计与实现,基于springboot+vue二手跳蚤
    文章目录背景介绍演示视频(进入B站观看画面更清晰):项目架构和内容获取(文末获取)部分功能展示用户前端系统管理后台项目相关文件为什么我?本章节给大家带来的是一个基于java的大学生二手交易平台系统设计与实现,可适用于校园二手交易系统,基于Java的二手交易商城系统,大学......
  • springboot在线商城系统源码idea开发mysql数据库
    下载地址:https://download.csdn.net/download/qq_41221322/89519994摘要近年来,网上购物成了风靡全球的一种现象,大家逐渐接受了网上下单,隔天取货的这种方式。我们分析了一些购物网站现有的不足,结合我们所学的知识,制作了一款购物网站程序。学以致用,语言采用了大学时期学习的J......
  • springboot在线智能助考系统-计算机毕业设计源码00068
    摘要随着人工智能技术的快速发展,智能辅助学习系统在教育领域日益受到重视。本研究旨在基于GPT构建在线智能助考系统,结合先进的自然语言处理技术,为用户提供智能问答、模拟考试、资源分享、交流论坛等功能,旨在提升用户学习效率和体验。GPT模型作为一种自然语言生成模型,具有......
  • springboot事故车辆与违章车辆跟踪系统-计算机毕业设计源码03863
    摘  要科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设事......
  • springboot个人健康信息管理小程序-计算机毕业设计源码07695
    摘要在当今这个数字化、信息化的时代,个人健康管理已成为人们生活中不可或缺的一部分。随着生活节奏的加快,越来越多的人开始关注自己的身体状况,希望能够及时了解并调整自己的生活习惯,以达到最佳的健康状态。为此,我们开发了一款基于SpringBoot的个人健康信息管理小程序,旨在......
  • SpringBoot使用线程池实现异步批量处理任务
    模拟批处理大量数据@Slf4j@ComponentpublicclassTestFutureService{@AutowiredprivateTestFutureServiceImpltestFutureServiceImpl;/***多线程的优势:多核CPU使用多线程可以提高CPU的利用率(单核CPU不行,反而降低),可以实现异步调用。**......
  • SpringBoot集成Mongodb文档数据库
    添加Maven依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>配置Mongodb连接信息spring:data:mongodb:host:10.30.29.246......
  • 课程设计-基于Springboot+Vue的网上商城购物系统的设计与实现(源码+LW+包运行)
    源码获取地址:https://download.csdn.net/download/u011832806/89426605系统演示视频:链接:https://pan.baidu.com/s/1p9Xv9VrlNXSyNXRkdhccPg?pwd=xfdy一.系统概述网上商城购物系统主要是为了提高工作人员的工作效率和更方便快捷的满足用户,更好存储所有数据信息及快速方......