不定期分享java相关技术干货,每天进步一点点,欢迎关注,一起交流!
开始:
首先在windows下启动kafka
启动方法如下:
首先下载kafka,zookeeper安装包:
修改下
为你配置的文件路径
修改如图文件
zookeeper启动:
复制下面那个配置文件,重命名为zoo.cnf,然后启动就可以了
在启动kafka不知道为什么我再本机上,一直点击启动文件无法启动,后来采用启动窗口启动的:
.binwindowskafka-server-start.bat .configserver.properties
进入那个包里就可以无需要进入bin下
然后整合springboot
,
可以看到初始化的进行发送消息了,
看具体代码:
<?xml version="1.0" encoding="UTF-8"?>4.0.0org.springframework.boot spring-boot-starter-parent 2.1.5.RELEASEcom.cxy skafka 0.0.1-SNAPSHOTskafkaDemo project for Spring Boot1.8org.springframework.boot spring-boot-starter-web org.springframework.kafka spring-kafka com.alibaba fastjson 1.2.56org.projectlombok lombok trueorg.springframework.boot spring-boot-starter-test testorg.springframework.kafka spring-kafka-test testorg.springframework.boot spring-boot-maven-plugin
启动类:
package com.cxy.skafka;import com.cxy.skafka.component.UserLogProducer;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import javax.annotation.PostConstruct;@SpringBootApplicationpublic class SkafkaApplication { public static void main(String[] args) { SpringApplication.run(SkafkaApplication.class, args); } @Autowired private UserLogProducer userLogProducer; @PostConstruct public void init() { for (int i = 0; i < 10; i++) { userLogProducer.sendlog(String.valueOf(i)); } }}
model
package com.cxy.skafka.model;import lombok.Data;import lombok.experimental.Accessors;/*** * @ClassName: Usrlog * @Description: * @Auther: cxy * @Date: 2020/11/1:16:47 * @version : V1.0 */@Data@Accessorspublic class Userlog { private String username; private String userid; private String state;}
producer
server.port=8080#制定kafka代理地址spring.kafka.bootstrap-servers=localhost:9092#消息发送失败重试次数spring.kafka.producer.retries=0#每次批量发送消息的数量spring.kafka.producer.batch-size=16384#每次批量发送消息的缓冲区大小spring.kafka.producer.buffer-memory=335554432# 指定消息key和消息体的编解码方式spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializerspring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer#=============== consumer =======================# 指定默认消费者group idspring.kafka.consumer.group-id=user-log-groupspring.kafka.consumer.auto-offset-reset=earliestspring.kafka.consumer.enable-auto-commit=truespring.kafka.consumer.auto-commit-interval=100# 指定消息key和消息体的编解码方式spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializerspring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
消费者:
package com.cxy.skafka.component;import org.apache.kafka.clients.consumer.ConsumerRecord;import org.springframework.kafka.annotation.KafkaListener;import org.springframework.stereotype.Component;import java.util.Optional;/*** * @ClassName: UserLogConsumer * @Description: * @Auther: cxy * @Date: 2020/11/1:16:54 * @version : V1.0 */@Componentpublic class UserLogConsumer { @KafkaListener(topics = {"userLog"}) public void consumer(ConsumerRecord consumerRecord){ Optional kafkaMsg= Optional.ofNullable(consumerRecord.value()); if (kafkaMsg.isPresent()){ Object msg= kafkaMsg.get(); System.err.println(msg); } }}
配置文件:
server.port=8080#制定kafka代理地址spring.kafka.bootstrap-servers=localhost:9092#消息发送失败重试次数spring.kafka.producer.retries=0#每次批量发送消息的数量spring.kafka.producer.batch-size=16384#每次批量发送消息的缓冲区大小spring.kafka.producer.buffer-memory=335554432# 指定消息key和消息体的编解码方式spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializerspring.kafka.producer.value-serializer=org.apache.kafka.common.serialization.StringSerializer#=============== consumer =======================# 指定默认消费者group idspring.kafka.consumer.group-id=user-log-groupspring.kafka.consumer.auto-offset-reset=earliestspring.kafka.consumer.enable-auto-commit=truespring.kafka.consumer.auto-commit-interval=100# 指定消息key和消息体的编解码方式spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializerspring.kafka.consumer.value-deserializer=org.apache.kafka.common.serialization.StringDeserializer
启动之后就是上面的效果