Apache kafka Kafka流保持输入分区

Apache kafka Kafka流保持输入分区,apache-kafka,apache-kafka-streams,Apache Kafka,Apache Kafka Streams,我想知道是否有一种“好”的方法可以将Kafka streams使用的消息写入相同的分区(编号)。我有两个主题,每个用户有相同数量的分区和消息,其中一个用户的所有消息都必须在同一个分区中,以避免该用户的无序消息。目标分区必须与输入分区相同,才能使输出监视正常工作如果我使用处理器API,我知道我可以通过ProcessorContext访问处理器中的源分区。但是在streamspartioner中,我只有键、值和分区数。我可以编写一个处理器,它接受输入分区并将其写入密钥,因为我们不使用它,它只包含nu

我想知道是否有一种“好”的方法可以将Kafka streams使用的消息写入相同的分区(编号)。我有两个主题,每个用户有相同数量的分区和消息,其中一个用户的所有消息都必须在同一个分区中,以避免该用户的无序消息。目标分区必须与输入分区相同,才能使输出监视正常工作
如果我使用处理器API,我知道我可以通过ProcessorContext访问处理器中的源分区。但是在streamspartioner中,我只有键、值和分区数。我可以编写一个处理器,它接受输入分区并将其写入密钥,因为我们不使用它,它只包含null。但这感觉真的很糟糕,因为一个分区中的每个记录都有相同的密钥,并且只有在我们需要密钥来包含一些真实数据时才起作用
我还可以解析该值并提取用于计算分区的id,但这感觉非常糟糕,因为它涉及字符串解析,似乎没有必要,因为我在处理器中已经有了分区
有没有一种方法可以使流的分区保持不变,而不涉及对滥用密钥之前我序列化的消息进行解析?

为什么不首先为密钥创建一个UUID?我知道这本身是有意义的,但我无法访问编写第一个主题的生产者,我看不到这将如何帮助解决我的问题。如果输出空密钥,它将使用默认分区器重新路由。如果使用静态值,例如UUID或您自己的此类ID字段,然后在输出主题中给定相同数量的分区,则密钥将始终进行哈希处理并与输入主题相同的路由。。。现在,如果您的生产者确实覆盖了分区器,那么您需要自己覆盖分区器,或者通过在处理器中转发来硬编码该分区。您的数据中似乎有一些用于对输入数据进行分区的用户ID——如果该用户ID在您的结果数据中,您可以使用与上游相同的分区策略来保留分区。谢谢@MatthiasJ.Sax我打开了一张罚单,看到了您对KIP的评论。Atm我正在等待接入,一接入就会打开一个