将数据从REST api摄取到Kafka

将数据从REST api摄取到Kafka,rest,apache-kafka,Rest,Apache Kafka,我有很多RESTAPI来从不同的数据源提取数据,现在我想将这些REST响应发布到不同的kafka主题。我还想确保不会产生重复的数据。 是否有任何工具可用于执行此类操作?因此,一般来说,卡夫卡处理管道应该能够处理多次发送的消息。这是一项自2017年年中(鉴于我在2018年1月撰写这篇文章)和卡夫卡0.11以来才出现的功能,因此一般来说,除非您在卡夫卡安装中是超级bleedy edge,否则您的管道应该能够处理同一消息的多次交付 那当然是你的管道。现在,您遇到了一个问题,即您的数据源可能会多次将消息

我有很多RESTAPI来从不同的数据源提取数据,现在我想将这些REST响应发布到不同的kafka主题。我还想确保不会产生重复的数据。
是否有任何工具可用于执行此类操作?

因此,一般来说,卡夫卡处理管道应该能够处理多次发送的消息。这是一项自2017年年中(鉴于我在2018年1月撰写这篇文章)和卡夫卡0.11以来才出现的功能,因此一般来说,除非您在卡夫卡安装中是超级bleedy edge,否则您的管道应该能够处理同一消息的多次交付

那当然是你的管道。现在,您遇到了一个问题,即您的数据源可能会多次将消息传递给您的HTTP->Kafka微服务

从理论上讲,您应该将管道设计为幂等的:相同更改消息的多个应用程序应该只影响数据一次。当然,这说起来容易做起来难。但若你们能做到这一点,那个么“问题就解决了”:只需发送重复的消息,不管什么都无所谓。这可能是最好的驾驶方式,无论一次性交付魔法做什么。(如果你不明白为什么这个超级神奇的井,这里有一个家庭作业主题:))

假设您的输入数据是关于用户的帖子。如果您发布的数据包含某种在日期更新的
,您可以创建一个事务日志Kafka主题。将键设置为用户ID,将值设置为应用于该用户的所有(比如)更新字段。在处理HTTP帖子时,请在本地KTable中查找该主题的用户,检查您的帖子是否已被录制。如果它已经被记录了,那么就不要把它变成卡夫卡

即使没有
updated_at
字段,也可以将用户文档保存在KTable中。如果Kafka是一个事务日志数据流(由内而外的数据库),那么KTables是从右而外的流:又是一个数据库。如果KTable中的当前值(所有应用更改的累积)与文章中给出的对象相匹配,那么您已经应用了更改