Spring Boot教程之五十七:在 Apache Kafka 上发布 JSON 消息

Spring Boot | 如何在 Apache Kafka 上发布 JSON 消息

Apache Kafka是一个发布-订阅消息系统。消息队列允许您在进程、应用程序和服务器之间发送消息。在本文中,我们将了解如何在 Spring Boot 应用程序中向 Apache Kafka 发送 JSON 消息。

为了了解如何创建 Spring Boot 项目,请参阅本文。

JSON 的全称是 JavaScript Object Notation。JSON 是一种用于数据交换的轻量级数据格式,人类可以轻松读取和编写,机器也可以轻松解析和生成。虽然它源自 JavaScript 的一个子集,但它与语言无关。它是一种完全独立于语言的文本格式。可以按照以下步骤将 JSON 消息发布到 Apache Kafka:

  1. 转到spring initializr并创建具有以下依赖项的启动项目:
    • Spring Web
    • Spring for Apache Kafka
  2. 在 IDE 中打开项目并同步依赖项。在本文中,我们将创建一个学生模型,我们将在其中发布学生详细信息。因此,创建一个模型类Student。添加数据成员并创建构造函数并创建 getter 和 setter。以下是学生类的实现:

// Java program to implement a

// student class

  

// Creating a student class

public class Student {

  

    // Data members of the

    // student class

    int id;

    String firstName;

    String lastName;

  

    // Constructor of the student

    // class

    public Student(int id, String firstName,

                   String lastName)

    {

        this.id = id;

        this.firstName = firstName;

        this.lastName = lastName;

    }

  

    // Implementing the getters

    // and setters

    public int getId()

    {

        return id;

    }

  

    public void setId(int id)

    {

        this.id = id;

    }

  

    public String getFirstName()

    {

        return firstName;

    }

  

    public void setFirstName(String firstName)

    {

        this.firstName = firstName;

    }

  

    public String getLastName()

    {

        return lastName;

    }

  

    public void setLastName(String lastName)

    {

        this.lastName = lastName;

    }

}

 3. 现在,创建一个带有注释@RestController的新类Controller。创建一个GET API并使用参数作为字符串和模型类对象初始化KafkaTemplate。以下是控制器的实现:

// Java program to implement a

// controller

  

@RestController

@RequestMapping("gfg")

public class UserResource {

  

    @Autowired

    private KafkaTemplate<String, Student>

        kafkaTemplate;

  

    private static final String TOPIC

        = "StudentExample";

  

    @GetMapping("/publish/{id}/"

                + "{firstName}/{lastName}")

  

    public String post(

        @PathVariable("id") final int id,

        @PathVariable("firstName") final

            String firstName,

        @PathVariable("lastName") final

            String lastName)

    {

  

        kafkaTemplate.send(

            TOPIC,

            new Student(

                id, firstName,

                lastName));

  

        return "Published successfully";

    }

}

4. 创建一个带有注释@Configuration的StudentConfig类。在这个类中,我们将序列化模型类的对象。

// Java program to serialize the

// object of the model class

  

@Configuration

public class StudentConfig {

  

    @Bean

    public ProducerFactory<String, Student>

    producerFactory()

    {

        // Create a map of a string

        // and object

        Map<String, Object> config

            = new HashMap<>();

  

        config.put(

            ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,

            "127.0.0.1:9092");

  

        config.put(

            ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,

            StringSerializer.class);

  

        config.put(

            ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,

            JsonSerializer.class);

  

        return new DefaultKafkaProducerFactory<>(config);

    }

  

    @Bean

    public KafkaTemplate<String, Student>

    kafkaTemplate()

    {

        return new KafkaTemplate<>(

            producerFactory());

    }

}

5. 现在,启动 zookeeper 和 Kafka 服务器。我们需要创建一个名为StudentExample 的新主题。为此,打开一个新的命令提示符窗口并将目录更改为 Kafka 文件夹。

6. 现在,使用以下命令创建一个新主题:

对于 Mac 和 Linux:bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic topic_name

对于 Windows: .\bin\windows\kafka-topics.bat –create –zookeeper localhost:2181 –replication-factor 1 –partitions 1 –topic topic_name

7.现在要实时查看 Kafka 服务器上的消息,请使用以下命令:

对于 Mac 和 Linux:bin/kafka-console-consumer.sh –bootstrap-server localhost:9092 –topic topic_name –from-beginning

对于 Windows: .\bin\windows\kafka-console-consumer.bat –bootstrap-server localhost:9092 –topic topic_name –from-beginning

8.运行应用程序并调用 API 如下:

localhost:8080/gfg/publish/{id}/{first name}/{last name}

注意:如果使用了不同的端口,则将端口替换为 8080。

输出:

  • 调用 API:
  • 实时查看消息:

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

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

相关文章

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one&#xff08;青柠学术插件&#xff09;的时候&#xff0c;使用插件跳转obsidian中的对应笔记&#xff0c;出现上图情况。&#xff08;错误中提到的…

切削刀具热处理的作用学习笔记分享

对于一个搞冷加工的打工仔来说&#xff0c;热工的知识总是感觉那么新鲜。本期一起来学习一下切削刀具的热处理的一点点内容&#xff0c;虽然不是那么专业&#xff0c;但是了解一些还是很有好处的&#xff0c;废话不多说了&#xff0c;直接开始&#xff1a; 切削刀具热处理的作…

基于Web的宠物医院看诊系统设计与实现(源码+定制+开发)在线预约平台、宠物病历管理、医生诊疗记录、宠物健康数据分析 宠物就诊预约、病历管理与健康分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

WPS excel使用宏编辑器合并 Sheet工作表

使用excel自带的工具合并Sheet表&#xff0c;我们会发现需要开通WPS会员才能使用合并功能&#xff1b; 那么WPS excel如何使用宏编辑器进行合并 Sheet表呢&#xff1f; 1、首先我们要看excel后缀是 .xlsx 还是 .xls &#xff1b;如果是.xlsx 那么 我们需要修改为 .xls 注…

ubuntu22.4 ROS2 安装gazebo(环境变量配置)

ubuntu版本&#xff1a;ubuntu22.4 最近在学习ROS2 视频教程古月居的入门课&#xff1a; 视频教程 文字笔记 问题 在学到关于Gazebo的时候&#xff0c;遇到下面问题&#xff1a; 运行 $ ros2 launch gazebo_ros gazebo.launch.py在这里卡住&#xff0c;不弹出gazebo 解决…

【Linux】7.Linux基础开发工具使用(1)

文章目录 1. Linux 软件包管理器 yum1.1 什么是软件包1.2 关于 rzsz1.3 查看软件包1.4 如何安装软件1.5 如何卸载软件我怎么知道要安装什么软件呢&#xff1f;源常用命令对照表&#xff1a; 2. Linux开发工具Linux编辑器-vim使用2.1 vim的基本概念命令模式&#xff1a;2.2 简单…

漫话架构师|什么是系统架构设计师(开篇)

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 关注犬余&#xff0c;共同进步 技术从此不孤单

DevOps实用场景:在哪些业务中应用DevOps最有效

随着科技的迅猛发展和客户需求的不断变化&#xff0c;IT初创公司在不断追求更高的效率、更快速的交付和更强的市场适应力。在这个背景下&#xff0c;DevOps成为了推动组织成功的关键策略之一。本文将帮助您了解什么是DevOps&#xff0c;哪些团队或企业最适合实施DevOps&#xf…

如何学习网络安全?有哪些小窍门?

学好网络安全其实没有所谓的捷径&#xff0c;也没有什么小窍门。 入门网络安全首先要有浓厚的学习兴趣&#xff0c;不然很容易就变成了从入门到放弃了。 其次要能静下心&#xff0c;踏踏实实的打好基础。如果你是零基础&#xff0c;建议从Web安全入手&#xff0c;课程难度相对…

Windows下载MySQL8.0

Windows下载MySQL8.0 MySQL :: Download MySQL Installer (Archived Versions) 在这个网页中选择相应的版本&#xff0c;点击下载即可。 但是在下载之前需要保证&#xff1a; 电脑用户名是英文相应的防火墙要关闭以前的mysql要在系统中卸载干净在控制命令里&#xff0c;以管…

使用Java Socket实现GPS定位数据处理

在许多应用场景中&#xff0c;如车辆追踪、移动设备定位等&#xff0c;GPS定位数据的实时获取和处理至关重要。本文将介绍如何使用Java Socket编程来接收GPS设备发送的数据并进行处理。 业务说明&#xff1a; 车辆追踪系统需要实时获取车辆的GPS定位信息。车辆上的GPS设备通过…

【Unity踩坑】Unity中提示缺少Visual Studio组件

问题&#xff1a; 在Unity中选择UWP平台时&#xff0c;提示Visual Studio缺少组件。 Selected Visual Studio is missing required components and may not be able to build the generated project. 解决方案&#xff1a; 在Visual Studio Installer里&#xff0c;安装上&quo…

ADC(Analog-to-digital converter)模拟-数字转换器

ADC简介 ADC&#xff08;Analog-to-Digital Converter&#xff09;&#xff0c;即模拟-数字转换器&#xff0c;是一种将模拟信号转换成数字信号的电子设备。它在现代电子系统中扮演着至关重要的角色&#xff0c;广泛应用于传感器信号处理、通信系统、医疗设备、工业自动化等多…

ASP.NET Core - 日志记录系统(二)

ASP.NET Core - 日志记录系统&#xff08;二&#xff09; 2.4 日志提供程序2.4.1 内置日志提供程序2.4.2 源码解析 本篇接着上一篇 ASP.NET Core - 日志记录系统(一) 往下讲&#xff0c;所以目录不是从 1 开始的。 2.4 日志提供程序 2.4.1 内置日志提供程序 ASP.NET Core 包括…

从零开始深度学习:(1)张量的常用操作

孩子们&#xff0c;懒大王回来了&#xff01; 正如标题所说&#xff0c;今天我们继续开始新的篇章&#xff0c;我们要开始高强度学习深度学习的相关内容&#xff0c;这个专栏内容较多、全是干货&#xff0c;我们还会在合适的地方进行拓展一些额外的语法或者别的相关知识&#…

【Idea】编译Spring源码 read timeout 问题

Idea现在是大家工作中用的比较多的开发工具&#xff0c;尤其是做java开发的&#xff0c;那么做java开发&#xff0c;了解spring框架源码是提高自己技能水平的一个方式&#xff0c;所以会从spring 官网下载源码&#xff0c;导入到 Idea 工具并编译&#xff0c;但是发现build的时…

C++|CRC校验总结

参考&#xff1a; Vector - CAPL - CRC算法介绍 开发工具 > CRC校验工具 文章目录 简介CRC-8CRC-16CRC-32 简介 循环冗余校验&#xff08;Cyclic Redundancy Check&#xff0c;简称CRC&#xff09;是一种数据校验算法&#xff0c;广泛用于检测数据传输或存储过程中的错误。…

【Linux】11.Linux基础开发工具使用(4)

文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须…

windows系统“acadres.dll”文件丢失或错误导致游戏运行异常如何解决?windows系统DLL文件修复方法

acadres.dll是存放在windows系统中的一个重要dll文件&#xff0c;缺少它可能会造成部分游戏不能正常运行。当你的电脑弹出提示“无法找到acadres.dll”或“计算机缺少acadres.dll”等错误问题&#xff0c;请不用担心&#xff0c;我们将深入解析DLL文件错误的成因&#xff0c;并…

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意&#xff1a;小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务&#xff0c;如果没有就在插件管理中添加插件 2.腾讯位置服务…