put()
我可以控制触发 Kafka Connect Sink 任务方法的时间间隔吗?Kafka Connect 框架在这方面的预期行为是什么?理想情况下,我想指定,例如,“不要打电话给我,除非你有 X 个新记录/Y 个新字节,或者自上次调用以来经过了 Z 毫秒”。这可能会使接收器任务中的批处理逻辑更简单(引用文档,“在许多情况下,内部缓冲将很有用,因此可以一次发送整批记录,从而减少将事件插入下游数据存储的开销) .
问问题
925 次
1 回答
1
今天, put from aSinkTask
仅当在 a 中调用DeliverMessages 时才被调用WorkerSinkTask
。好消息是,唯一deliverMessages
发生的时间是在轮询中,因此您应该通过 覆盖消费者属性来控制轮询新记录的频率。
如果你想做内部缓冲,你可以看看 HDFSConnector 在它的 SinkTask 实现中是如何处理这个的。但是,现在,Connect 将立即放置投票返回的所有记录。
综上所述,如果您真的希望在消息到达下游系统之前对其进行批处理,您可能会考虑查看控制调用频率的offset.flush.interval.ms 和 offset.flush.timeout.msflush()
。
于 2016-09-02T11:55:26.640 回答