所以我有一个带有多个分区的Kafka主题,并在其上生成消息。我希望根据用户ID对我的消息进行分区。我可以通过使用UserId作为消息密钥或通过编写自定义分区程序来实现此目的。我如何找出哪个是正确的解决方案,有什么优缺点?
答案 0 :(得分:1)
如您所知,使用user-id作为密钥,您确信具有相同user-id的邮件将始终传递到同一分区,但您无法决定分区本身。我的意思是默认分区程序处理具有目标分区的密钥%分区数的哈希。 如果在您的应用程序中,您需要具有特定用户ID的消息转到特定分区(即您希望该用户标识以&#34开头; A"转到分区0),您需要编写自定义分区程序。 如果您没有任何限制,我认为使用user-id作为键的默认分区程序可以正常工作。 无论如何,在发送和接收后,您都可以获得有关分区的信息。