活性卡夫卡生产商

问题描述 投票:0回答:1

我正在探索反应式卡夫卡,只是想确认反应式卡夫卡是否等同于同步生产者。使用同步生产者,我们将获得所有ACK的消息传递保证,并维护生产者序列。但是,使用ASYNC无法保证交付和排序。反应式生成器是否等效于SYNC或ASYNC?

apache-kafka kafka-producer-api reactive-kafka
1个回答
1
投票

反应意味着异步。同样在普通的Kafka客户端API中,KafkaProducer是异步的。当您显式调用阻止程序执行的kafkaProducer.send().get()时,它将变为同步。

即使使用异步生产者,也可以保证消息传递。这取决于没有。重试和delivery.timeout.ms

[使用ack=all可以确保在ISR之间复制数据,并且您具有一致性保证的容错能力,以防万一中间人去世,消费者可以看到要看到的内容。

关于顺序,在发送消息之前先对其进行批处理。如果像[[batch-1,batch-2batch-3这样异步发送多个批次,并且由于某些原因batch-1batch-2]之后失败>和batch-3已发送,然后重新绑定batch-1将在batch-2batch-3之后产生batch-1,从而使它不按顺序排列。如果需要序列,则需要确保将max.in.flight.requests.per.connection设置为1,以便每个生产者在任何给定的时间只能进行一个请求。但是,这可能会对性能产生影响。您可能需要调整其他设置,例如batch.size,例如增加它,以在将机内请求设置为1的情况下提高吞吐量。

因此,您对ASYNC无法保证交付和排序的假设是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.