首页 > 解决方案 > Kafka-Streams 保持输入分区

问题描述

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

标签: apache-kafkaapache-kafka-streams

解决方案


推荐阅读