寫在前面
這裡我會總結一下,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
更多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