从零开始学Spring Boot系列-集成Kafka

Kafka简介

Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会。Kafka主要用于构建实时数据管道和流应用。它类似于一个分布式、高吞吐量的发布-订阅消息系统,可以处理消费者网站的所有动作流数据。这种动作流数据包括页面浏览、搜索和其他用户的行动。通过这些数据,Kafka能够实时地将数据流传输到系统和应用上。Kafka的主要特性包括:

  1. 高吞吐量:Kafka以高吞吐量处理数据,即使是非常大量的数据也能轻松应对。

  2. 分布式:Kafka是分布式的,可以在多个节点上运行,从而实现高可用性和容错性。

  3. 持久性:Kafka将数据持久化到磁盘,因此即使系统崩溃,数据也不会丢失。

  4. 实时性:Kafka可以实时处理数据,为实时分析、监控和报警等应用提供了强大的支持。

Ubuntu安装Kafka

本文是在wsl2上的Ubuntu 22.04上安装Kafka。你需要先安装Java环境,因为Kafka是用Java编写的。然后,你可以从Apache Kafka的官方网站下载并安装Kafka。以下是安装步骤:

  1. 安装Java环境:你可以使用apt-get命令安装OpenJDK。

 sudo apt-get update  
 sudo apt-get install openjdk-17-jdk

  1. 下载Kafka:从Apache Kafka的官方网站下载适合你操作系统的版本。下载完成后,解压到指定目录。

   wget https://mirrors.aliyun.com/apache/kafka/3.7.0/kafka_2.13-3.7.0.tgz
   tar -xzf kafka_2.13-3.7.0.tgz  
   mv kafka_2.13-3.7.0 kafka
   cd kafka

  1. 启动Kafka:Kafka依赖于ZooKeeper,所以你需要先启动ZooKeeper,然后再启动Kafka。

 # 启动ZooKeeper  
 bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
 # 启动Kafka  
 nohup bin/kafka-server-start.sh config/server.properties 2>&1 &

  1. 使用kafka客户端连接

Spring Boot集成Kafka

  1. 添加依赖:在你的Spring Boot项目的build.gradle 文件中添加Kafka的依赖。

dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web'
 compileOnly 'org.projectlombok:lombok'
 annotationProcessor 'org.projectlombok:lombok'
 implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
 runtimeOnly 'mysql:mysql-connector-java:8.0.17'
 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
 implementation 'org.springframework.boot:spring-boot-starter-data-redis'
 implementation 'org.apache.commons:commons-pool2'
 implementation 'org.springframework.kafka:spring-kafka'
}

  1. 配置Kafka:在application.properties或application.yml文件中配置Kafka的相关属性,如broker地址、端口、topic等。

spring.kafka.bootstrap-servers=localhost:9092  
spring.kafka.consumer.group-id=my-group  
spring.kafka.consumer.auto-offset-reset=earliest  
spring.kafka.template.default-topic=my-topic

  1. 创建生产者:使用KafkaTemplate发送消息到Kafka。

 package cn.daimajiangxin.springboot.learning.kafka;

 import jakarta.annotation.Resource;
 import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.stereotype.Service;

 @Service
 public class KafkaProducer {
     @Resource
     private KafkaTemplate<String, String> kafkaTemplate;

     public void sendMessage(String message) {
         kafkaTemplate.send("my-topic", message);
     }
 }

  1. 创建消费者:使用@KafkaListener注解监听Kafka中的消息。

package cn.daimajiangxin.springboot.learning.kafka;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;

@Service
public class KafkaConsumer {
    @KafkaListener(topics = "my-topic", groupId = "my-group")
    public void consume(String message) {
        System.out.println("Received message: " + message);
    }
}

  1. 创建控制器:KafkaController

 package cn.daimajiangxin.springboot.learning.controller;
 import cn.daimajiangxin.springboot.learning.kafka.KafkaProducer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RestController;

 @RestController
     public class KafkaController {

     private final  KafkaProducer kafkaProducer;

         @Autowired
         public KafkaController(KafkaProducer kafkaProducer) {
             this.kafkaProducer = kafkaProducer;
         }

         @GetMapping("/kafka")
         public void kafka() {
             kafkaProducer.sendMessage("Hello World");
         }
     }

现在,你的Spring Boot应用已经集成了Kafka,你可以通过生产者发送消息,并通过消费者接收并处理这些消息了。

20240321131109

20240321131208

总结

以上就是关于从零开始学Spring Boot系列文章——集成Kafka的简介。Kafka作为一个强大的分布式流处理平台,与Spring Boot的集成可以极大地简化实时数据处理应用的开发。希望这篇文章能帮助你更好地理解Kafka及其在Spring Boot项目中的应用。

文章转载自:代码匠心

原文链接:https://www.cnblogs.com/daimajiangxin/p/18087329

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/479964.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】内核空间动态内存申请

&#x1f525;博客主页&#xff1a;PannLZ &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 文章目录 内核空间动态内存申请1.kmalloc()2._ _get_free_pages()3.vmalloc() 内核空间动态内存申请 1.kmalloc() #include <linux/slab.h>vo…

Flask项目中使用蓝湖实现启动项配置——多个controller项

项目结构 # controller1-__init__.py from flask import Blueprintcont2_sale_blueprint Blueprint(cont2_sale_blueprint, __name__) cont2_user_blueprint Blueprint(cont2_user_blueprint, __name__) from . import user_controller from . import sale_controller# contr…

推荐一款很不错的vscode高亮插件

用过很多款高亮插件&#xff0c;总感觉大部分显示都很乱&#xff0c;但是其中有一款用起来很清晰明了&#xff0c;很喜欢&#xff01; 插件名字&#xff1a;select-highlight-cochineal-color 使用效果&#xff1a; 底色高亮让人感觉很清晰&#xff0c;一个好的高亮插件能让你…

VScode通过ssh连接github

通过ssh连接github 1.生成公钥和私钥2.设置config文件3.配置ssh免密登录4.远程仓库初始化 1.生成公钥和私钥 首先选择一个文件夹&#xff0c;右击 git bash here&#xff0c;在命令行输入命令&#xff0c;按下三次回车生成一个**.ssh文件夹**&#xff0c;一般在用户的user根目…

Django信号

一、介绍 Django有一个“信号调度器(signal dispatcher)”,当框架中的其他地方发生操作时,它可以通知一些解耦的应用程序 官网:信号 | Django 文档 | Django 1.1、内置的信号的使用 1.1.1、定义接收器函数 def my_callback(sender, **kwargs):print("Request finis…

【Linux】/proc文件系统

&#x1f525;博客主页&#xff1a;PannLZ &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 文章目录 /proc文件系统1.获取与进程相关的信息:/proc/ID2./proc 目录下的系统信息3. 访问/proc 文件4.动态创建/proc文件系统4.1创建目录4.2创建proc…

【回溯专题part1】【蓝桥杯备考训练】:n-皇后问题、木棒、飞机降落【已更新完成】

目录 1、n-皇后问题&#xff08;回溯模板&#xff09; 2、木棒&#xff08;《算法竞赛进阶指南》、UVA307&#xff09; 3、飞机降落&#xff08;第十四届蓝桥杯省赛C B组&#xff09; 1、n-皇后问题&#xff08;回溯模板&#xff09; n皇后问题是指将 n 个皇后放在 nn 的国…

通过Anaconda安装Python会得到的重要文件夹

E:\Anaconda\路径下 Scripts 文件夹&#xff1a;该文件夹包含了可执行的Python脚本文件&#xff0c;例如pip和conda等命令行工具。【pip3.exe和django-admin.exe等】Lib 文件夹&#xff1a;该文件夹包含了Python的标准库和其他第三方库的源代码文件。【Lib下面的site-packages…

农业四情监测系统的工作原理

农业四情监测系统的工作原理【TH-Q1】农业四情监测系统是一种应用现代科技手段&#xff0c;以实现对农田环境信息的实时监测和数据采集的系统。这一系统通过对农田的土壤、气象、病虫害以及作物生长状况等四个方面的实时监测&#xff0c;帮助农民和农业管理者更好地了解和掌握农…

力扣● 503.下一个更大元素II ● 42. 接雨水

503.下一个更大元素II 与496.下一个更大元素 I的不同是要循环地搜索元素的下一个更大的数。那么主要是对于遍历结束后&#xff0c;单调栈里面剩下的那些元素。 如果直接把两个数组拼接在一起&#xff0c;然后使用单调栈求下一个最大值就可以。 代码实现的话&#xff0c;不用直…

电脑笔记软件与桌面备忘录的高效设置指南

在数字化生活的大潮中&#xff0c;电脑笔记软件和桌面备忘录已成为我们日常信息管理与时间规划的重要载体。它们犹如你的私人智囊团&#xff0c;随时随地帮你记录灵感、整理思路、规划任务。本文将深度解析电脑笔记软件的多元功能&#xff0c;并手把手教你如何设置实用的电脑桌…

Kotlin函数进阶玩法

公众号「稀有猿诉」 原文链接 More about Kotlin Functions Kotlin中的函数是一级对象&#xff0c;除了常规的函数式编程以外&#xff0c;还支持一些非常灵活的特殊用法&#xff0c;可以大大增强代码的可读性和简洁性&#xff0c;让代码更加的优雅&#xff0c;在业界顶级…

第6讲-MIPS处理器(3)MIPS单周期处理器设计

三. MIPS单周期处理器设计 1.单周期数据通路设计 2.单周期控制器设计 3.单周期性能分析

阿里云服务器ECS经济型e实例2核2G优惠价格99元一年性能测试

阿里云服务器99元一年配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;新用户和老用户均可买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云99元服务器性能测评&#xff…

碳素光线疗法——动,植物 光育实验

碳素光线疗法——动&#xff0c;植物 光育实验 碳素光线疗法&#xff1a; 中西医、民间疗法融为一体&#xff0c;提高机体自身治愈力&#xff0c;免疫力&#xff0c;改善体质和保持健康&#xff0c;有助于疾病的预防和治疗的疗法。不吃药、不打针、不手术也能得健康&#xff0c…

HCIP的学习(3)

网络类型及数据链路层协议 网络类型分类 P2P网络----点到点网络类型MA网络-----多点接入网络 BMA----广播型多点接入网络NBMA—非广播型多点接入网络&#xff08;快淘汰了&#xff09; 数据链路层协议 MA网络 以太网协议 特点&#xff1a;需要使用MAC地址对设备进行区分…

经济事件对我们投资没影响吗?昂首资本的这两个实例说明白再说

各位投资者现在还不明白经济事件对我们投资的影响吗&#xff1f;下面昂首资本就通过两个实例&#xff0c;各位投资者能否明白经济事件对我们投资的影响。 2015年6月4日&#xff0c;澳大利亚零售量新闻发布。分析师预计销量增幅高达0.4%&#xff0c;但是结果却大吃一惊&#xf…

第四百一十七回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"自定义标题栏"相关的内容&#xff0c;本章回中将介绍自定义Action菜单.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在这里提到的…

【代码学习】Mediapipe人脸检测使用记录

Mediapipe&#xff0c;每秒200-300帧的实时人脸检测&#xff0c;提取画面中的人脸框&#xff0c;实现后续各种应用&#xff1a;人脸属性识别、表情识别、关键点检测、三维重建、增强现实、AI换妆等 code&#xff1a;google/mediapipe: Cross-platform, customizable ML soluti…

【NLP】从变形金刚到Transfomer 01

Transformer是一种非常强大的模型&#xff0c;在自然语言处理&#xff08;NLP&#xff09;领域里引起了一场革命。 "从变形金刚到技术革命家&#xff0c;Transformer不再仅是儿时屏幕上的英雄。&#x1f916;✨ 在今天的AI领域&#xff0c;它变身成为自然语言处理的超级英…