kafka集成springboot
-
引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency>
-
添加yaml配置
spring: application: name: kafka_spring_boot kafka: bootstrap-servers: node1:9092,node2:9092 # 生产者相关 producer: # k v 序列化器 key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.apache.kafka.common.serialization.StringSerializer # ack acks: 1 # 压缩类型 compression-type: snappy # 重试次数 retries: 3 # 消费者相关 consumer: group-id: kafka_spring_boot key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.apache.kafka.common.serialization.StringDeserializer
-
生产者代码 核心 org.springframework.kafka.core.KafkaTemplate#send
@RestController public class SpringKafkaController { @Autowired private KafkaTemplate<String, String> kafkaTemplate; @GetMapping("sendMsg") public void sendMsg(String msg) { final String topic = "test_topic"; kafkaTemplate.send(topic, msg); } }
-
消费者代码 @KafkaListener注解
@Configuration @Slf4j public class KafkaSpringBootListener { @KafkaListener(topics = "test_topic") public void consume(String msg) { log.info("接受消息:{}", msg); } }