我对他们之间的关系有点困惑 max.in.flight.requests.per.connection
对于Kafka制作人和同步发布的事件,使用的是SpringKafka,并希望有人能够澄清两者之间的关系。
我希望使用springkafka的 KafkaTemplate
. SpringKafka文档提供了一个使用 ListenableFuture
的 get(SOME_TIME, TimeUnit)
启用事件的同步发布(下面复制以供参考)。
public void sendToKafka(final MyOutputData data) {
final ProducerRecord<String, String> record = createRecord(data);
try {
template.send(record).get(10, TimeUnit.SECONDS);
handleSuccess(data);
}
catch (ExecutionException e) {
handleFailure(data, record, e.getCause());
}
catch (TimeoutException | InterruptedException e) {
handleFailure(data, record, e);
}
}
我在看Kafka的producer配置文档,发现Kafka有一个 max.in.flight.requests.per.connection
,负责Kafka的以下设置。
在阻塞之前,客户端将在单个连接上发送的最大未确认请求数。请注意,如果将此设置设置为大于1并且存在失败的发送,则存在由于重试而导致消息重新排序的风险(即,如果启用了重试)。
价值是什么 max.in.flight.requests.per.connection
当异步处理事件发布时,是否将give设置为值1 give?是否设置 max.in.flight.requests.per.connection
对于Kafka制作人来说,强制同步发布事件的值是1?如果我想为Kafka制作人设置事件的同步发布,并采用SpringKafka推荐的方法,我应该关心吗 max.in.flight.requests.per.connection
还是可以忽略这一点?
1条答案
按热度按时间b4wnujal1#
我认为他们一点关系都没有。发送仍然是异步的;将其设置为1意味着第二个将阻塞,直到第一个完成。
你仍然需要得到未来的结果,来测试成功/失败。