发送消息时kafka已同步

时间:2020-08-27 04:21:21

标签: java apache-kafka

如何知道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)

1 个答案:

答案 0 :(得分:0)

除非调用producer.send(...).get,否则Kafka客户端是异步的。请按照kafka客户端文档进行进一步的了解。

Kafka在客户端具有缓冲和批处理功能,还可以决定何时将邮件传递给代理。另外,它取决于在客户端设置的生产者配置。