Gli*_*ide 5 apache-kafka apache-kafka-connect
我想保证使用保存数据时的写入顺序SinkTask。
如果我想在我的过程中抛出 RetriableException SinkTask.put(),写入Kafka Connect数据源的顺序会比分区中的顺序乱吗?
比如某个分区的消息是1-2-3,如果写入Message-2出现异常,Kafka Connect能否保证到达数据源的消息是1-2-3?
据我所知,Kafka Connect异步写入数据源。因此,数据似乎会无序到达数据源。
简短的回答:是的,消息的顺序将被保留,但您必须处理消息的重新传递。
在您的示例中,这意味着,如果SinkTask.put尝试向接收器传递以下一批消息:1,2,3,并且在写入 1 后和写入 2 之前通过抛出 RetriableException 失败, Connect 将暂停使用者并尝试重新交付在调用SinkTask.put期间失败的批处理。这给了我们前面提到的两个效果:
a) Connect 将暂停该任务/分区的使用者。这意味着在重试失败的消息之前不会传递其他批次的消息。因此,消息顺序被保留。例如,如果交付 1,2,3 因RetriableException失败,Connect 将不会在交付 1,2,3 之前交付 4,5,6。
b) Connect 将重试传递在SinkTask.put期间失败的整个消息集。这意味着您的接收器在尝试第二次写入消息 2 之前将再次看到消息 1。
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |