kafka簡介
待補充…
Spring For Kafka 官方鏈接
使用Docker 搭建kafka&zookeeper
待補充…
創建一個主題
待補充…
引入kafka依賴
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
注意:這裏有一個很大的坑,因爲版本的問題,spring-kafka和kafka-clients的版本一定要按照下圖對應。
kafka配置
spring:
kafka:
bootstrap-servers: 106.53.7.17:9092 #kafka的ip:port
producer: #生產者
retries: 0 #消息發送失敗的重試機制,大於0的時候啓用重試機制
batch-size: 16384 #默認批次大小。小批量將使分批變得不那麼普遍,並且可能會降低吞吐量(零批量將完全禁用批處理)。
buffer-memory: 33554432 #生產者可以用來緩衝等待發送到服務器的記錄的總內存大小。
acks: 1 #生產者要求leader在確認請求完成之前已收到的確認數。
key-serializer: org.apache.kafka.common.serialization.StringSerializer #key序列化
value-serializer: org.apache.kafka.common.serialization.StringSerializer #value序列化
consumer: #消費者
auto-offset-reset: earliest #當Kafka中沒有初始偏移量或服務器上不再存在當前偏移量時該怎麼辦。
enable-auto-commit: true #消費者的補償是否在後臺定期提交。
auto-commit-interval: 100 # 如果將“ enable.auto.commit”設置爲true,則將消費者偏移量自動提交給Kafka的頻率。
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer #key反序列化
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer #value反序列化
group-id: edcGroup #消費者組,消費者唯一標識
使用@EnableKafka 啓動kafka
@SpringBootApplication
@EnableKafka
public class KafkaApplication {
public static void main(String[] args) {
SpringApplication.run(KafkaApplication.class, args);
}
}
使用KafkaTemplate向主題mytopic發送消息
@RestController
public class KafkaController {
@Autowired
private KafkaTemplate<String,Object> kafkaTemplate;
@GetMapping("/send")
public boolean send(String message){
return kafkaTemplate.send("mytopic",message).isDone();
}
}
監聽主題mytopic的消息
@Component
public class MessageListener {
@SneakyThrows
@KafkaListener(topics = "mytopic")
public void onMessage(String message){
System.out.println(message);
}
}