Spring Boot和Kafka整合

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);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章