前提,自己本地需要有一个或者多个kafka服务器(外部kafka服务器也可以)
- 创建springboot工程(此处省略一万字)
- 修改pom.xml文件
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
- 配置yml
spring:
kafka:
# kafka服务器,多个服务器之间用逗号分开
bootstrap-servers: 127.0.0.1:9092
# 生产者
producer:
# 序列化
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
# 消费者
consumer:
# 消费组ID
group-id: default_consumer_group
# 是否提交offset
enable-auto-commit: true
# 提交offset延时(接收到消息后多久提交offset)
auto-commit-interval: 1000
# 反序列化
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
- 编写生产者代码(我使用的是接口模式的生产者)
@RestController
@RequestMapping(value = "producerController")
public class ProducerController {
@Autowired
private KafkaTemplate<String,Object> kafkaTemplate;
@GetMapping("/send")
public String send(String msg){
//使用kafka模板发送信息
kafkaTemplate.send("demo", msg);
return "success";
}
}
- 实现消费
@Component
public class ConsumerDemo {
@KafkaListener(topics = "demo")
public void listen (ConsumerRecord<?, ?> record){
System.out.printf("topic:"+ record.topic(), "offset:"+record.offset(), "value:"+record.value());
}
}
仅供自己学习记录使用