Che*_*tom 1 python java architecture apache-kafka
卡夫卡的初学者.
我希望有一个python生成器发送前几个类型为A的消息(json),然后是类型B.消费者必须使用它们来保持这个顺序以更新数据库.
我的第一个想法是使用单个主题来保证消息的顺序.我读了这些答案:
然而,在Kafka中,将一个主题用于不同的对象类型似乎不是一个好习惯吗?
因此,更多"kafkaesque"的另一个解决方案是针对此问题的两个主题.但是,在发送第二个主题之前,生产者是否有办法确保第一个主题中的所有消息都已被消耗?我会失去异步吗?
在您看来,这种配置中最好的策略是什么?
谢谢.
订单不会保留在多个主题或多个分区中,因此您需要将所有消息发送到该主题中的一个主题和一个分区.
除非您使用Avro或其他一些序列化程序来强制执行每个主题的一致架构,否则不要担心将不同的数据类型发送到同一主题.如果您要发送JSON,那么单个主题就可以了.
重要的是要注意,在主题的多个分区中不保留顺序.如果您的主题有一个分区,那么你没事.如果您的主题有多个分区,那么您应该在发布时使用密钥,并对需要保持有序的所有邮件使用相同的密钥.这将确保它们都进入同一个分区.
如果您想确保订单保留,您应该设置max.in.flight.requests.per.connection=1.否则,错误和重试一条消息可能会使其与其他正在进行的消息无序.
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |