我有一个来源,我可以从那里收到一批消息。这些消息需要添加到 Kafka - 可靠 - 没有遗漏并且没有乱序。
如果我使用 aync 生产者,当我放置许多消息时,我想知道一个分区是否关闭了一段时间,它会跳过该消息并放置下一条消息 - 这将导致消息无序。
有没有办法,我可以告诉卡夫卡 - 批量生成一组消息,或者原子地通过一切失败的一切?
*我不想做同步生产,因为它会严重影响吞吐量。
我有一个来源,我可以从那里收到一批消息。这些消息需要添加到 Kafka - 可靠 - 没有遗漏并且没有乱序。
如果我使用 aync 生产者,当我放置许多消息时,我想知道一个分区是否关闭了一段时间,它会跳过该消息并放置下一条消息 - 这将导致消息无序。
有没有办法,我可以告诉卡夫卡 - 批量生成一组消息,或者原子地通过一切失败的一切?
*我不想做同步生产,因为它会严重影响吞吐量。
您可以为此使用消息键。Kafka 保证消息在单个分区中的顺序,但不能跨多个分区。具有单个键的所有消息都传递到单个分区 - 因此它们的顺序被保留。同样,当作为批次发送时,它们将一起通过或失败。但是有一个交易:所有这些消息都由一台机器处理 - 没有并行性。
有关卡夫卡官方文档中的密钥和分区的更多背景信息:http:
//kafka.apache.org/documentation.html#intro_producers
http://kafka.apache.org/documentation.html#intro_consumers