Springboot整合Kafka


前言

上一篇文章我们把Kafka的集群环境搭建好了,这一次我们看下使用Springboot如何整合Kafka呢


一、创建Springboot工程

使用Springboot最便捷的创建工程的方法,老生常谈的内容,我们就不贴图了,
1、选择Springboot Initializr 点击next。
2、填写工程名以及选择Java版本,点击next。
3、选择两个依赖,WEB->Spring Web和Messaging->Spring for Apache Kafka。
4、再点击next,点击Finish,创建完成
5、选择项目右击,选择NEW ->创建Module,同样的流程,重复两次,分别创建Consumer和Producer。
此时的项目结构:
在这里插入图片描述

二、生产者

1.编写配置文件application.properties

代码如下(示例):

server.port=8088
# 配置kafka集群的broker地址,多个地址用逗号隔开
spring.kafka.bootstrap-servers=192.168.201.129:9092,192.168.201.131:9092,192.168.201.132:9092
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer

2.创建ProducerController

代码如下(示例):

package com.chenan.producer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;


@RestController
public class ProducerController {

    @Resource
    private KafkaTemplate<String,Object> kafkaTemplate;

    @RequestMapping("send")
    public String sendMess(String mess){
        // 参数为topic名,发送的信息
        kafkaTemplate.send("test1",mess);
        return "success";
    }
}

三、消费者

1. 编写配置文件application.properties

server.port=8089
# 配置kafka集群的broker地址,多个地址用逗号隔开
spring.kafka.bootstrap-servers=192.168.201.129:9092,192.168.201.131:9092,192.168.201.132:9092
# group-id可以在节点中kafka目录下config中的consumer.properties中查看
spring.kafka.consumer.group-id=test-consumer-group
spring.kafka.consumer.enable-auto-commit=true
spring.kafka.consumer.auto-commit-interval=1000
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer

2.创建ConsumerController

package com.chenan.consumer.controller;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;

@Component
public class ConsumerController {

    @KafkaListener(topics = "test1")
    public void reception(ConsumerRecord<?,?> record){
        System.out.println(String.format("topic is %s, offset is %d, value is %s",record.topic(),record.offset(),record.value()));
    }
}

四、测试

分别启动producer和consumer两个工程。
浏览器访问:http://localhost:8088/send?mess=hello
观察Consumer的控制台,如果出现以下打印,证明成功了
在这里插入图片描述


总结

以上就是我今天跟大家分享的全部内容,欢迎各位大神留言沟通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值