我有一个来自我获得一批消息的来源 . 这些消息需要添加到Kafka - 可靠 - 没有错过,没有乱序 .
如果我使用异步生成器,当我放入很多消息时,我想知道一个分区是否已关闭一段时间,它只会跳过该消息并放入下一条消息 - 这将导致无序消息 .
有没有办法,我可以告诉 Kafka - 批量生成一组消息,并原子地传递一切失败的一切?
*我不想做同步产品,因为它会严重影响吞吐量 .
您可以使用消息密钥 . Kafka保证单个分区中的消息顺序,但不保证跨多个分区 . 具有单个密钥的所有消息都将传递到单个分区 - 因此将保留其顺序 . 同样,当作为批次发送时,它们都将一起通过或失败 . 但有一个交易:所有这些消息都由一台机器处理 - 没有并行性 .
有关密钥和分区的更多背景信息,请参阅官方kafka文档:http://kafka.apache.org/documentation.html#intro_producershttp://kafka.apache.org/documentation.html#intro_consumers
1 回答
您可以使用消息密钥 . Kafka保证单个分区中的消息顺序,但不保证跨多个分区 . 具有单个密钥的所有消息都将传递到单个分区 - 因此将保留其顺序 . 同样,当作为批次发送时,它们都将一起通过或失败 . 但有一个交易:所有这些消息都由一台机器处理 - 没有并行性 .
有关密钥和分区的更多背景信息,请参阅官方kafka文档:http://kafka.apache.org/documentation.html#intro_producers
http://kafka.apache.org/documentation.html#intro_consumers