Spring Boot整合Kafka

本文详细介绍如何在SpringBoot项目中整合Kafka,包括环境搭建、依赖添加、配置修改及producer与consumer的创建,最后通过实例验证消息发送与接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

使用背景

由于新下发需求中,要求将信息封装,再以生产者的形式吐到kafka中,去供消费者服务使用,所以学习一下springboot项目整合kafka。

简介

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

Spring Boot整合Kafka

安装kafka

环境准备:centos7虚拟机
由于kafka依赖于zookeeper,所以在安装kafka之前,需要安装zookeeper。网上随便找一篇参考安装即可。
安装过程:
1.官网下载kafka压缩包文件,我使用的是kafka_2.11-2.4.1.tgz
2.下载后解压,设置日志目录,并且修改配置文件信息并修改外部访问。
3.启动并查看是否成功运行。

./kafka-server-start.sh /usr/local/kafka/kafka_2.11-2.4.1/config/server.properties
[root@zookeeper ~]# jps
123300 Jps
121821 Kafka
114702 QuorumPeerMain
107262 CommunityEntryPoint
[root@zookeeper ~]# 

创建Spring Boot项目并添加依赖

源码地址

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
            <version>2.5.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka-clients</artifactId>
        </dependency>

修改配置,添加kafka相关

# kafka
spring.kafka.bootstrap-servers=192.168.1.106:9092
spring.kafka.consumer.group-id=group1

创建producer

提供简单的发送方法,来推送消息。

@Component
public class KafkaProducerConfig {
    @Autowired
    private KafkaTemplate kafkaTemplate;

    private String topic="myKafkaTest";
    //发送
    public void send(String str){
        kafkaTemplate.send(topic,str);
    }

}

创建consumer

提供简单的接收方法,来处理消息。

@Component
public class KafkaConsumerConfig {
    @KafkaListener(topics = { "myKafkaTest" } )
    //接收
    public void receive(ConsumerRecord consumerRecord){
        Optional<?> kafkaMessage = Optional.ofNullable(consumerRecord.value());
        System.out.println("received...." + kafkaMessage);

        if (kafkaMessage.isPresent()) {
            Object msg = kafkaMessage.get();
            System.out.println("received message is :" + msg);
        }
    }
}

测试验证

因为是简单实现,所以直接添在主类进行消息初始化,在init方法中发送消息。

@SpringBootApplication
public class SpringkafkatestApplication {
    @Autowired
    private KafkaProducerConfig kafkaProducerConfig;
    @PostConstruct
    public void init(){
        for (int i = 0; i < 10; i++) {
            kafkaProducerConfig.send("send message : " +  i);
            System.out.println("message send success ...."  );
        }
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringkafkatestApplication.class, args);
    }

}

程序启动后,查看控制台输出:
会打印一些关于kafka的配置信息,在所有信息加载后,可以看到消息发送情况。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值