我是 Apache Kafka 的新手。我想将我们的用户 id 作为 id 分配给主题分区。有没有办法将我们自己的用户 ID 分配给分区。我对此进行了几个小时的研究,但没有找到任何与将 ID 分配给分区相关的文章。
在向主题发布消息时,我想使用用户 ID 作为键。这样所有消息都进入同一个分区。而且我想确保一个分区应该只包含一个与用户相关的消息。
在消费来自分区的消息时,我可以在消费者中使用这个用户 ID 吗?
有没有办法实现这个功能?
我是 Apache Kafka 的新手。我想将我们的用户 id 作为 id 分配给主题分区。有没有办法将我们自己的用户 ID 分配给分区。我对此进行了几个小时的研究,但没有找到任何与将 ID 分配给分区相关的文章。
在向主题发布消息时,我想使用用户 ID 作为键。这样所有消息都进入同一个分区。而且我想确保一个分区应该只包含一个与用户相关的消息。
在消费来自分区的消息时,我可以在消费者中使用这个用户 ID 吗?
有没有办法实现这个功能?
ID 生成逻辑取决于您自己的应用程序/服务。
Kafka的默认行为DefaultPartitioner
是将所有相同的ID放入同一个分区,按到达时间排序(不一定是生产者时间,没有额外的生产者配置);您无需为此做任何事情
我可以在消费者中使用这个用户 ID
这只是记录键,所以是的...
如果您的意思是要根据 ID 为消费者分配某些分区,那么您需要反转DefaultPartitioner
散列函数
要实现接口,可以自定义分区逻辑:
public interface Partitioner