【发布时间】:2021-07-18 19:58:38
【问题描述】:
我在一个视频教程中看到,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();
}
}
}
【问题讨论】:
-
其实我以为它支持一个连续的值范围:-1 == "all" == leader and all in-sync-replicas, 0 == fire-and-forget, 1 == just领导者,2 ==领导者和一个副本,3 ==领导者和两个副本,等等?
-
我想 acks >1 从 v0.9 开始被删除:cwiki.apache.org/confluence/display/KAFKA/…
标签: java apache-kafka