如何知道ack = all,发送消息时,kafka是否在Java中同步?
public KafkaProducer<String, String> createProducer(String ack) {
Properties props = new Properties();
props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, KafkaConstant.KAFKA_BROKER);
props.put("acks",ack );
props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
KafkaProducer<String, String> producer = new KafkaProducer<>(props);
return producer;
}
和方法发送:
producer.send(new ProducerRecord<>(topic, key, content)
最后一个
KafkaProducer<String, String> producer = mainService.createProducer(ack);
RecordMetadata recordMetadata = mainService.sendKafkaMessage(key, content, producer, topic)
答案 0 :(得分:0)
除非调用producer.send(...).get
,否则Kafka客户端是异步的。请按照kafka客户端文档进行进一步的了解。
Kafka在客户端具有缓冲和批处理功能,还可以决定何时将邮件传递给代理。另外,它取决于在客户端设置的生产者配置。