SpringBoot集成kafka接收消息

news2024/9/20 18:50:13

SpringBoot集成kafka接收消息

  • 1、SpringBoot集成kafka接收消息
  • 2、@Payload注解接收消息体内容
  • 3、@Header注解接收消息头内容
  • 4、接收消息所有内容

在这里插入图片描述

1、SpringBoot集成kafka接收消息

生产者

package com.power.producer;

import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

@Component
public class EventProducer {

    @Resource
    private KafkaTemplate<String,String> kafkaTemplate;

    public void sendEvent(){
        kafkaTemplate.send("helloTopic","hello kafka");
    }

}

application.yml配置文件

spring:
  application:
    #应用名称
    name: spring-boot-02-kafka-base

  #kafka连接地址(ip+port)
  kafka:
    bootstrap-servers: 47.116.35.15:9092
    #配置生产者(24个配置)
#    producer:


    #配置消费者(24个配置)
#    consumer:

测试类

package com.power;

import com.power.producer.EventProducer;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class SpringBoot02KafkaBaseApplication {

    @Resource
    private EventProducer eventProducer;

    @Test
    void sendInterceptor(){
        eventProducer.sendEvent();
    }

}

2、@Payload注解接收消息体内容

消费者:

package com.power.consumer;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

@Component
public class EventConsumer {

    //采用监听的方式接收事件(消息,数据)
    @KafkaListener(topics = {"helloTopic"},groupId="helloGroup")
    public void onEvent(@Payload String event){
        System.out.println("读取/消费到的事件:"+event);
    }
}

测试结果:
在这里插入图片描述

3、@Header注解接收消息头内容

注意,不太版本kafak使用@Header注解读取partition时不一样:

  • kafka3.0以下版本使用KafkaHeaders.RECEIVED_PARTITION_ID获取分区
  • kafka3.0以上版本使用KafkaHeaders.RECEIVED_PARTITION获取分区

消费者:

package com.power.consumer;

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

@Component
public class EventConsumer {

    //采用监听的方式接收事件(消息,数据)
    @KafkaListener(topics = {"helloTopic"},groupId="helloGroup")
        public void onEvent(@Payload String event,
                            @Header(value=KafkaHeaders.RECEIVED_TOPIC) String topic,
                            @Header(value=KafkaHeaders.RECEIVED_PARTITION_ID) String partition){
        System.out.println("读取/消费到的事件:"+event+",topic:"+topic+",partition:"+partition);
    }
}

测试结果:
在这里插入图片描述

4、接收消息所有内容

在这里插入图片描述
在这里插入图片描述

消费者:

package com.power.consumer;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.support.KafkaHeaders;
import org.springframework.messaging.handler.annotation.Header;
import org.springframework.messaging.handler.annotation.Payload;
import org.springframework.stereotype.Component;

import java.util.function.Consumer;

@Component
public class EventConsumer {

    //采用监听的方式接收事件(消息,数据)
    @KafkaListener(topics = {"helloTopic"},groupId="helloGroup")
        public void onEvent(@Payload String event,
                            @Header(value=KafkaHeaders.RECEIVED_TOPIC) String topic,
                            @Header(value=KafkaHeaders.RECEIVED_PARTITION_ID) String partition,
                            ConsumerRecord<String,String> record){
        System.out.println("读取/消费到的事件:"+event+",topic:"+topic+",partition:"+partition);
        System.out.println("读取/消费到的事件:"+record.toString());
    }
}

测试打印所有消息:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【自动化】考试答题自动化完成答案,如何实现100%正确呢

一、科目仿真考试不能自动答题 我的答案是可以的&#xff0c;电脑程序可以模拟人的操作完成所有的答题并提交结束考试 二、分析页面内容 完成一个题目&#xff0c;包括判断题&#xff0c;对与错2选1答案&#xff0c;单选题ABCD4选1答案&#xff0c;多选题大家想一想 F12查看按…

基于机器学习的糖尿病数据分析与风险评估系统

B站视频及代码下载&#xff1a;基于机器学习的糖尿病数据分析与风险评估系统_哔哩哔哩_bilibili 1. 项目简介 糖尿病&#xff0c;作为一种在全球范围内广泛流行的慢性疾病&#xff0c;已经影响了数以百万计的人们的生活&#xff0c;给全球公共健康带来了严重的挑战。因此&#…

uni-app的示例项目--简单的登陆页面及列表页面

uni-app的示例项目--简单的登陆页面及列表页面 文章说明核心代码效果展示源码下载 文章说明 随着移动端使用占比升高&#xff0c;手机端的App、小程序也成了一些场景下的首选&#xff1b;采用uni-pp开发此类应用具有很多优势&#xff0c;它可以直接使用vue3进行开发&#xff0c…

集合论与位运算之间的转换

集合可以用二进制表示&#xff0c;二进制从低到高第 i 位为 1 表示 i 在集合中&#xff0c;为 0 表示 i 不在集合中。例如集合 {0,2,3} 可以用二进制数 1101(2)​ 表示&#xff1b;反过来&#xff0c;二进制数 1101(2)​ 就对应着集合 {0,2,3}。 例如集合 {0,2,3} 可以压缩成 …

干货|软件测试简历的编写以及注意事项

一、个人信息 1.年龄超过30岁的&#xff0c;就不体现年龄&#xff1b; 2.学历是本科的&#xff0c;以及专业是计算机的可以加上学历、专业2个标签&#xff0c;大专的则可以不体现&#xff1b; 3.英语过了四六级的可以加1个英语的标签&#xff1b; 4.如果你的户籍和面试城市…

Python入门级 序列全集 [ 继上篇 进阶版 持续更新中哞哞哞!!! ]例题较多

本文主要结合例题介绍了序列【常用函数、可迭代对象】&#xff0c;字典【函数、写法、定义、视图对象】&#xff0c;集合【常用函数】&#xff0c;运算符优先级。这几种数据集合在Python中也是蛮重要的&#xff0c;对于新手比较友好。 本文例题大多来自哔站up主鱼C-小甲鱼【Pyt…

系统编程 网络 http协议

http协议------应用层的协议 万维网&#xff1a;http解决万维网之间互联互通 计算机web端网络只能看到文字 1.如何在万维网中表示一个资源&#xff1f; url <协议>&#xff1a;//<主机>&#xff1a;<端口>/<路径> ------------------------------…

Adobe After Effects的插件--------CC Ball Action

CC Ball Action是粒子效果器,其将2D图层变为一个个由3D小球构成的图层。它是AE内置的3D插件。 使用条件 使用该插件的图层需是2D图层。 我们以一张图片素材为例: 给图片图层添加CC Ball Action效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角…

【LeetCode面试150】——36有效的数独

博客昵称&#xff1a;沈小农学编程 作者简介&#xff1a;一名在读硕士&#xff0c;定期更新相关算法面试题&#xff0c;欢迎关注小弟&#xff01; PS&#xff1a;哈喽&#xff01;各位CSDN的uu们&#xff0c;我是你的小弟沈小农&#xff0c;希望我的文章能帮助到你。欢迎大家在…

微服务基础与Spring Cloud框架

一、系统架构的演变 1.1单体应⽤架构 Web应⽤程序发展的早期&#xff0c;⼤部分web⼯程(包含前端⻚⾯,web层代码,service层代码,dao层代码)是将 所 有的功能模块,打包到⼀起并放在⼀个web容器中运⾏。 1.2 垂直应⽤架构 当访问量逐渐增⼤&#xff0c;单⼀应⽤增加机器带来的…

【Unity3D小技巧】Unity3D中实现FPS数值显示功能实现

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群&#xff1a;398291828 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 很简单也很使用的小技巧&#xff0c;就是在Unity…

PHP酒店宾馆民宿预订系统小程序源码

酒店宾馆民宿预订系统&#xff1a;一键解锁完美旅行住宿新体验 &#x1f31f; 开篇&#xff1a;告别繁琐&#xff0c;拥抱便捷预订新时代 在这个快节奏的时代&#xff0c;每一次旅行的规划都希望能尽可能高效与省心。想象一下&#xff0c;在规划一场说走就走的旅行时&#xf…

Nature | 小麦D基因组的起源和演化,野生近缘种对作物抗病改良具有重要潜力

image-20240815151428804 2024年8月14日沙特阿卜杜拉国王科技大学Brande B. H. Wulff 和 Simon G. Krattinger团队在Natue发表Origin and evolution of the bread wheat D genome研究论文&#xff0c;通过研究粗山羊草&#xff08;Aegilops tauschii&#xff0c;也被称为节节麦…

Ant-Design-Vue快速上手指南+排坑,操作详细步骤

Ant-Design-Vue是一款基于Vue.js的UI组件库&#xff0c;它不仅提供了丰富的高质量组件&#xff0c;还支持灵活的配置选项&#xff0c;使得开发者能够快速构建出既美观又功能强大的前端应用。下面将详细介绍Ant-Design-Vue的快速上手指南和排坑操作&#xff0c;帮助开发者顺利使…

Springboot整合mongodb和mysql两个数据库,mysql无法连接

一、问题 在日常开发中&#xff0c;难免需要用到mongodb和mysql数据库 当我在mongodb正常连接使用的时候&#xff0c;切换回mysql&#xff0c;发现无法连接 二、原因分析 1、端口查看被占用 winr打开命令提示符&#xff08;cmd&#xff09;&#xff0c;可以使用以下命令&…

html标签大合集一文入门

一、文档结构标签 <html>&#xff1a;网页的根标签 &#xff0c;嵌套包含所有标签。 <head>&#xff1a;头标签&#xff0c;包含文档的元数据用于编写网页的修饰内容&#xff0c;附加信息。 <body>&#xff1a;身体标签&#xff0c;用于编写展示内容&…

HTML5休闲小游戏《城市争夺战》源码,引流、刷广告利器

HTML5休闲小游戏《城市争夺战》源码&#xff0c;直接把源码上传到服务器就能使用了&#xff01; 下载链接&#xff1a;https://www.huzhan.com/code/goods468820.html

TCP Analysis Flags 之 TCP ACKed unseen segment

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

Java---面向对象

一.面向对象 1.概念 1.1面向过程 C 吃饭&#xff1a;动作为核心 起身--》开门--》大量的逻辑判断 1.2面向对象 C/Java/Python/Go 目标&#xff1a;吃饭 人&#xff08;忽略&#xff09;吃饭 站在人类的角度思考问题 2.什么是对象&#xff1f; Object-->东西(万事万物皆…

【数据结构2】哈希表、哈希表的应用(集合与字典、md5算法和文件的哈希值)

1 哈希表 哈希表一个通过哈希函数来计算数据存 储位置的数据结构&#xff0c;通常支持如下操作: 插入(键&#xff0c;值):插入键值对(键&#xff0c;值) Get(key):如果存在键为键的键值对则返回其值&#xff0c;否则返回空值 删除(键):删除键为键的键值对哈希表(Hash Table&am…