我在視頻教程中看到,當製作人發佈消息時,Kafka Broker支持3種類型的確認。Kafka - Producer Acknowledgegment
0 - 消防和忘記 1 - 領導確認 2 - 所有的經紀人
我使用卡夫卡的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();
}
}
}
其實我以爲它支持連續的值範圍:-1 ==「全部」==領導和所有in-sync-replicas,0 == fire-and-forget,1 ==只是領導,2 = =領導和一個更多的副本,3 ==領導和兩個更多副本,等等? –
我想ack> 1從v0.9以後版本中刪除:https://cwiki.apache.org/confluence/display/KAFKA/KIP-1+-+Remove+support+of+request.required.acks –