springboot整合kafka
要求:jdk8以上
其他信息:springboot2版本的项目,kafka2版本
下载kafka
在这里下载2.8.1版本的
下载后解压后,打开文件夹
,进入到bin下windows里面
,在这个页面打开两个cmd窗口,执行以下命令启动
#启动zookeeper
zookeeper-server-start.bat …/…/config/zookeeper.properties
#启动kafka
kafka-server-start.bat …/…/config/server.properties
执行若报错,检查一下jdk版本还有环境都好着没,文件路径上尽量避免中文以及空格,具体原因需具体分析
引入依赖
在项目中pom.xml里面引入kafka依赖
<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.8.11</version> </dependency>
添加配置
在application.yml文件中添加配置
spring: kafka: bootstrap-servers: 127.0.0.1:9092 consumer: group-id: myGroup
生产者
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class KafkaMessageService {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@Async
@PostConstruct
public void init() {
new Thread(() -> {
Thread thread = Thread.currentThread();
while (true) {
synchronized (thread) {
try {
kafkaTemplate.send("time", String.valueOf(System.currentTimeMillis()))
.addCallback(
success -> System.out.println("send message success..."),
error -> System.err.println("send message error..." + error)
);
thread.wait(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}, "test").start();
}
}
消费者
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
@Component
public class KafkaMessageListener {
private static final Logger log = LoggerFactory.getLogger(KafkaMessageListener.class);
@KafkaListener(topics = "time")
public void onMessage(String msg) {
log.debug("mes-->{}", msg);
}
}