- 创建springboot项目,增加kafka依赖
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
- 增加配置文件
#生产者
spring.kafka.producer.bootstrap-servers=192.168.1.130:9092
#消费者
spring.kafka.consumer.bootstrapServers=192.168.1.130:9092
spring.kafka.consumer.groupId=kafka-test
spring.kafka.consumer.autoOffsetReset=latest
spring.kafka.consumer.enableAutoCommit=true
- 增加生产者代码
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SendMessageController {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
private String topic = "test-topic";
@GetMapping("/send")
public String send(String params) {
System.out.println("[ 收到请求 ]");
kafkaTemplate.send(topic, params);
System.out.println("[ 返回响应 ]");
return "您的任务已提交";
}
}
- 增加消费者代码
package com.example.kafkademo;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Component;
@Component
public class MessageHandler {
@KafkaListener(topics = {
"test-topic"})
public void handle(String message) {
System.out.println("[ 处理器开始处理消息 ]" + System.currentTimeMillis());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(message);
System.out.println("[ 处理器处理消息完成 ]" + System.currentTimeMillis());
}
}