我们有一个系统从用户接收数据并将数据推送到kafka,只有当我们确定数据已被推送时,我们才会向用户发送" OK"响应。
由于新的kafka使用异步发送(ProducerRecord,Callback),我想知道如果这个发送是防撞(容错)?
我的猜测是它很可能不是,所以如何在同步模式下使用它呢?或者我应该让用户等到调用回调?
答案 0 :(得分:0)
异步发送
批处理是效率的重要驱动因素之一,并且为了实现批处理,Kafka生产者具有异步模式,该模式在内存中累积数据并在单个请求中发送更大批量。批处理可以配置为累积不超过固定数量的消息,并且等待不超过一些固定的延迟限制(例如100条消息或5秒)。这允许累积更多字节以发送,并且在服务器上几乎没有更大的I / O操作。由于这种缓冲发生在客户端,它显然会降低持久性,因为在生成器崩溃的情况下,任何缓冲在内存中但尚未发送的数据都将丢失。