我想保证使用 SinkTask
.
如果我想在我的 SinkTask.put()
,将 Kafka Connect
写入数据源的顺序比分区中的顺序更乱?
例如,如果分区中的消息是1-2-3,如果在写入消息-2期间发生异常,kafka connect能否保证到达数据源的消息是1-2-3?
据我所知,kafka connect异步写入数据源。所以看起来数据将无序地到达数据源。
我想保证使用 SinkTask
.
如果我想在我的 SinkTask.put()
,将 Kafka Connect
写入数据源的顺序比分区中的顺序更乱?
例如,如果分区中的消息是1-2-3,如果在写入消息-2期间发生异常,kafka connect能否保证到达数据源的消息是1-2-3?
据我所知,kafka connect异步写入数据源。所以看起来数据将无序地到达数据源。
1条答案
按热度按时间4xrmg8kj1#
简短回答:是的,邮件的顺序将被保留,但您必须处理邮件的重新传递。
在您的示例中,这意味着,如果sinktask.put尝试将以下一批消息传递到接收器:1、2、3,并且在写入1之后和写入2之前通过抛出retriableexception失败,connect将暂停使用者,并尝试重新传递调用sinktask.put期间失败的批。这给了我们上述两种效果:
a) connect将暂停此任务/分区的使用者。这意味着在重试失败的一批消息之前,不会传递其他任何一批消息。因此,保留了消息顺序。e、 g.如果传递1、2、3失败并出现retriableexception,则connect在传递1、2、3之前不会传递4、5、6。
b) connect将重试传递在sinktask.put期间失败的整个消息集。这意味着您的接收器在第二次尝试写入消息2之前,将再次看到消息1。