在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秒內沒有收到服務器的響應,它將拋出一個超時異常。你可以根據實際需求調整這個值。