在Kafka中,同步发送消息时,可以通过设置request.timeout.ms
参数来指定超时时间。这个参数用于控制客户端等待服务器响应的最长时间。如果在这个时间内服务器没有响应,客户端将抛出一个超时异常。
以下是如何设置request.timeout.ms
参数的示例:
request.timeout.ms
参数:Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("request.timeout.ms", "30000"); // 设置超时时间为30秒
Producer<String, String> producer = new KafkaProducer<>(props);
producer.send(new ProducerRecord<>("your-topic", key, value), new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
if (exception != null) {
System.out.println("发送消息失败: " + exception.getMessage());
} else {
System.out.println("消息发送成功,分区: " + metadata.partition() + ", offset: " + metadata.offset());
}
}
});
在这个示例中,我们将request.timeout.ms
参数设置为30秒。这意味着如果生产者在30秒内没有收到服务器的响应,它将抛出一个超时异常。你可以根据实际需求调整这个值。