比方说,我有2个卡夫卡主题登录和注销通过用户名并具有分区的相等数目的分割。 如果我运行一个消费者组,消费两个主题的两个消费者,我可以确定每个用户的登录和注销事件将由同一个消费者处理吗?如果消费多个主题,卡夫卡消费者是否处理相同的主题密钥?
0
A
回答
0
我不这么认为,至少使用缺省配置...让我解释一下更好...... 假设你有2个分区对每个话题如此: 登录主题有分区0和1(姑且称之为LIN0, lin1) 注销主题有分区0和1(我们称它们为lout0,lout1)
我们将两个消费者放在同一个消费者组中,它们被称为c1和c2。 对c1使用subscribe()方法可能会发生,它会得到lin0和lout1,而c2可能会得到lin1和lout0。 当生产者写入用户名= u1的登录名(例如)时,它可以在lin0中输入与用户名u1登录相关的消息,并且该消息将被c1消耗。在注销时可能会发生这样的情况,生产者会将用户名= u1的消息写入到由c2处理的lout0! 因此登录由c1处理,但通过c2注销!这就是你想要的当然不想要! 由于subscribe()方法处理自动分区分配和默认分区程序,生产者以循环方式向主题分区分发消息,因此发生此情况。
关于潜在的解决方案可能是编写一个自定义的分区程序在生产者上使用,以便根据一些基于用户名的标准,u1将始终写在分区0的两个主题(so lin0和lout0)。 然后在消费者端使用assign(),因此要求特定的分区,例如c1可以完全从lin0和lout0请求消费者。 当然,您失去了订阅提供的重新平衡功能。
相关问题
- 1. 卡夫卡多个主题消费
- 2. 同时作为卡夫卡消费者使用多个主题
- 3. 春季卡夫卡 - 所有主题到同一个消费者
- 4. 卡夫卡消费者为多个主题
- 5. 卡夫卡中的同一主题的消费者数量是否有限制?
- 6. 问题在消费者卡夫卡
- 7. 多个消费群体消费者如何在卡夫卡的同一主题上跨越分区工作?
- 8. 卡夫卡消费者无法从卡夫卡的主题订阅
- 9. 卡夫卡消费者 - 主题(S)具有较高优先级
- 10. 卡夫卡gruop消费者
- 11. 如何从生产者消费卡夫卡的消费者?
- 12. 卡夫卡用于实时数据处理多个消费者
- 13. 卡夫卡消费者不是从
- 14. 卡夫卡10.2新消费者与旧消费者
- 15. 多的消费者从同一主题的消费
- 16. 卡夫卡消费者/生产者API
- 17. 如何暂停卡夫卡消费者?
- 18. 为什么卡夫卡消费者API不获取由一个主题
- 19. Spark Streaming中的卡夫卡消费者
- 20. 云中的卡夫卡消费者
- 21. 卡夫卡消费者没有消费数据
- 22. 在Rust消费者中消费多个Kafka主题
- 23. 复位消费者在卡夫卡0.10
- 24. 卡夫卡消费者查询
- 25. 卡夫卡消费者滞后JMX
- 26. 卡夫卡消费者行为
- 27. 暂停高级卡夫卡消费者
- 28. 无法创建卡夫卡消费者
- 29. 卡夫卡消费者 - Java客户端
- 30. 卡夫卡0.90消费者坚持