不回调(工作异步调用),该程序等待的send()来完成,不立即执行下一行。在代码中,
ProducerRecord<Long, String> record = new ProducerRecord<Long, String>(TOPIC, text);
...
producer.send(record,new Callback() {
@Override
public void onCompletion(RecordMetadata metadata, Exception exception) {
logger.info("sent to kafka");
}
});
logger.info("ACEEVNTMNGR: i am not waiting for the return");
...
该代码不执行的下一行,但仅显示连接超时和“发送到海边的卡夫卡”后执行。其实有一个与连接到卡夫卡和得到错误的问题:
“连接到节点-1不能成立。经纪人可能无法使用。”
但我希望,因为异步调用的,它不应该等待,直到超时,但超时发生前执行qazxsw POI。
logger.info("ACEEVNTMNGR: i am not waiting for the return");
返回KafkaProducer:send
,而不是由Future<RecordMetadata>
函数执行的所有工作,被包裹到send
。
之前发送消息的元数据必须是可用的(在第一次发送他们必须取出)。如果元数据不可用或无法获取Future
将至少持续send
。默认情况下,它是60000毫秒。
在您的例子中,你应该看到:max.block.ms
60秒后。