簡體   English   中英

Kafka - 生產者致謝

[英]Kafka - Producer Acknowledgement

我在視頻教程中看到,Kafka Broker 在生產者發布消息時支持 3 種類型的確認。

0 - 火而忘記
1 - 領導確認
2 - 確認所有經紀人

我正在使用 Kafka 的 Java API 來發布消息。 這是必須使用特定於每個代理的 server.properties 為每個代理設置的內容還是必須由生產者設置的內容? 如果必須由生產者設置,請說明如何使用 Java API 進行設置。

import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.clients.producer.RecordMetadata;

import java.util.Properties;

public class KafkaProducerApp {

    public static void main(String[] args){
        Properties properties = new Properties();
        properties.put("bootstrap.servers","localhost:9092,localhost:9093,localhost:9094");
        properties.put("key.serializer","org.apache.kafka.common.serialization.StringSerializer");
        properties.put("value.serializer","org.apache.kafka.common.serialization.StringSerializer");

        KafkaProducer<String,String> kafkaProducer = new KafkaProducer<String, String>(properties);

        try{
            for(int i=0;i<150;i++) {
                RecordMetadata ack = kafkaProducer.send(new ProducerRecord<String, String>("replicated_topic", Integer.toString(i), "MyMessage" + Integer.toString(i))).get();
                System.out.println(" Offset = " + ack.offset());
                System.out.println(" Partition = " + ack.partition());
            }
        } catch (Exception ex){
            ex.printStackTrace();
        } finally {
            kafkaProducer.close();
        }



    }

}

它是一個生產者屬性,設置類似於您在代碼中擁有的其他屬性:

properties.put("acks","all");

可以在此處找到所有可配置生產者屬性的列表。

您可能還想查看與此生產者配置相關的代理(或主題)屬性min.insync.replicas

我認為您應該了解acks屬性實際做了什么,並查看幕后情況。 如果沒問題,你會看到這個屬性是由 producer配置

例如,您不能丟失任何消息,例如審核日志。 以下代碼我們將如何啟動我們的生產者配置:

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092,localhost:9093");
props.put("acks", "all"); //We are using acks=all in order to get the strongest guarantee we can.
props.put("retries", "3");
props.put("max.in.flight.requests.per.connection", "5");

這是一個小而強大的變化,對消息是否會到達有重大影響。

這張來自Kafka In Action書中的圖片更清楚地表示了acks屬性:

在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM