天天看點

kafka學習 -- 用戶端Producer API學習

寫在前面

這裡我會總結一下,Java 項目內建中,kafka Producer 的相關API使用,以及相關注意事項

內建方式 : spring-kafka

內建配置

spring:
  kafka:
    bootstrap-servers: 192.168.1.74:9092

    producer:
      retries: 3
      batch-size: 16384 # 預設 16Kb
      buffer-memory: 33554432 # 32M
      transaction-id-prefix: tx.
      key-serializer: org.apache.kafka.common.serialization.StringSerializer
      value-serializer: org.apache.kafka.common.serialization.StringSerializer      

這裡的幾個參數需要注意

  • retries ,重試次數
  • batch-size,batch 的大小
  • buffer-memory,記憶體緩沖大小
  • transaction-id-prefix,事務字首

一、topic

關于 Topic 的生成、管理,也是很重要的一部分

可 包含以下

  • topic 與topic.DLT的對稱管理
  • message 的序列化與反序列化
  • key,分區,副本
  • 異常消息轉換、處理

在使用中都是要特别留意的知識點

二、KafkaTemplate 相關API

釋出相關的API,send

kafka學習 -- 用戶端Producer API學習

更多API

kafka學習 -- 用戶端Producer API學習

三、相關使用

3.1、回調函數示例

@Transactional
    public void sendMessage2(String message) {
        ListenableFuture<SendResult<String, String>> send = kafkaTemplate.send(TOPIC, message);
        send.addCallback(
                result -> {
                    logger.info("目前線程ID {} send {} to {} success", Thread.currentThread().getId(), message, TOPIC);
                },
                ex -> {
//                        serviceWithRetry();
                    logger.info("目前線程ID {} send message to {} failure,目前消息{} ,error message:{}", Thread.currentThread().getId(), TOPIC, message, ex.getMessage());
                }
        );
    }      

四、更多Kafka,,用戶端、服務端,監控可參考下文

  • ​​kafka學習 – kafka connect​​
  • ​​kafka學習 – 用戶端Consumer API學習​​
  • ​​kafka學習 – 用戶端Producer API學習​​
  • ​​kafka學習 – 服務端指令學習​​
  • ​​Springboot內建Kafka​​