新版的Kafka Producer是否仍然还有producer.type 属性设置?

老版的Kafka 中说producer.type 是一个重要的属性,但是新版的文档中并没有提到这一点。

新版的新版的Kafka Producer是否仍然还有producer.type 属性设置?

新版的Producer 默认是异步发送消息的(async),但是可以通过调用future.get() 变成同步发送消息。

新版的Kafka Producer是否仍然还有producer.type 属性设置?

由于send() 方法默认是异步的,该方法将返回消息发送结果为Future<RecordMedata>。如果调用future.get() 方法,将阻塞该请求,直到完成请求,并返回RecordMetadata 对象或者在发送消息时抛出异常。

新版的Kafka Producer是否仍然还有producer.type 属性设置?

采用同步模式发送消息记录时,系统的性能会下降很多,因为需要等待返回的消息写入结果。在生产环境中,一般不建议这样使用,建议采用异步模式。

新版的Kafka Producer是否仍然还有producer.type 属性设置?

// 实例化一个消息记录对象,用来保存topic,key,value等等
ProducerRecord<String, String> record = new ProducerRecord<String, String>(
 topic, key, value);
// 调用send() 方法和回调函数
kafkaProducer.send(record, new Callback() {
 @Override
 public void onCompletion(RecordMetadata recordMetadata, Exception e) {
 if (e != null) {
 e.printStackTrace();
 } else {
 System.out.println("offset: " + recordMetadata.offset());
 }
 }
});

相关推荐