首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡夫卡连接能保证RetriableException发生时的书写顺序吗?

卡夫卡连接能保证RetriableException发生时的书写顺序吗?
EN

Stack Overflow用户
提问于 2017-04-20 01:20:03
回答 1查看 1K关注 0票数 4

在使用SinkTask保存数据时,我希望保证写入顺序。

如果我想在我的RetriableException期间抛出一个SinkTask.put()Kafka Connect会写到数据源无序而不是分区中的顺序吗?

例如,如果分区中的消息为1-2-3,如果在写入Message-2期间出现异常,Kafka Connect能否保证消息到达数据源时为1-2-3?

据我所知,Kafka写到数据源asynchronously.因此,数据似乎会无序地到达数据源。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-24 16:29:47

简短的回答:是的,消息的顺序将被保留,但是您将不得不处理消息的重新传递。

在您的示例中,这意味着,如果SinkTask.put试图向您的接收器传递以下批消息: 1,2,3并且在写入1之后失败,然后通过抛出RetriableException编写2,则Connect将暂停使用者并尝试重新传递在调用SinkTask.put期间失败的批处理。这给了我们上述两种影响:

( a)连接将暂停此任务/分区的使用者。这意味着在重新尝试失败消息之前,不会传递其他批消息。因此,保留消息顺序。例如,如果RetriableException交付1,2,3失败,连接在交付1,2,3之前不会交付4,5,6。

( b)连接将重试传递在SinkTask.put期间失败的整个消息集。这意味着您的接收器将再次看到消息1,然后再尝试第二次写入消息2。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43508626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档