1

我是 Apache Kafka 的新手。我想将我们的用户 id 作为 id 分配给主题分区。有没有办法将我们自己的用户 ID 分配给分区。我对此进行了几个小时的研究,但没有找到任何与将 ID 分配给分区相关的文章。

在向主题发布消息时,我想使用用户 ID 作为键。这样所有消息都进入同一个分区。而且我想确保一个分区应该只包含一个与用户相关的消息。

在消费来自分区的消息时,我可以在消费者中使用这个用户 ID 吗?

有没有办法实现这个功能?

4

2 回答 2

0

ID 生成逻辑取决于您自己的应用程序/服务。

Kafka的默认行为DefaultPartitioner是将所有相同的ID放入同一个分区,按到达时间排序(不一定是生产者时间,没有额外的生产者配置);您无需为此做任何事情

我可以在消费者中使用这个用户 ID

这只是记录键,所以是的...

如果您的意思是要根据 ID 为消费者分配某些分区,那么您需要反转DefaultPartitioner散列函数

于 2021-10-11T15:15:51.183 回答
0

要实现接口,可以自定义分区逻辑:

public interface Partitioner

详细信息:https://kafka.apache.org/26/javadoc/org/apache/kafka/clients/producer/Partitioner.html#partition-java.lang.String-java.lang.Object-byte:A-java。 lang.Object-byte:A-org.apache.kafka.common.Cluster-

于 2021-10-12T10:07:52.727 回答