我可以控制触发Kafka Connect Sink任务的put()
方法的时间间隔吗?在这方面,Kafka Connect框架的预期行为是什么?理想情况下,我想指定,例如,除非你有X个新记录/ Y个新字节,或者自上次调用以来经过Z毫秒,否则不要打电话给我#34;。这可能会使接收器任务中的批处理逻辑更简单(引用documentation," 在许多情况下内部缓冲将非常有用,因此可以立即发送整批记录,从而减少将事件插入下游数据存储的开销)。
答案 0 :(得分:0)
今天,仅在SinkTask
中调用deliverMessages时才会调用WorkerSinkTask
。好消息是,deliverMessages
发生的唯一时间是poll,因此您应该控制overriding consumer properties轮询新记录的频率。
如果您想进行内部缓冲,可以查看HDFSConnector如何在其implementation of SinkTask中处理此问题。但是,现在,Connect会立即放置由民意调查返回的任何记录。
所有这些都说,如果您真的希望在邮件到达下游系统之前批量处理邮件,您可以考虑查看offset.flush.interval.ms and offset.flush.timeout.ms,它控制调用flush()
的频率。