在kafka-streams中防止基于键的重新分区

5ssjco0h  于 2023-10-15  发布在  Apache
关注(0)|答案(1)|浏览(134)

我有一个有点奇怪的用例,我们的应用程序没有使用标准的Kafka分区。相反,我们有一个自定义的分区策略,我们使用复合键中的特定字段来决定如何分区。这通常是CustomerId,以便单个客户的所有记录都包含在单个分区中,但是键还包含使消息唯一的其他Id,以便压缩仍然有效。
例如
主题-1-键

{
  orderId,
  customerId
}

主题2键

{
  addressId,
  customerId
}

我想将这两条记录连接在一起,为了使用DSL实现这一点,我唯一的选择是将两条记录的密钥更新为客户ID,然后进行连接。然而,当我这样做时,Kafka-streams会自动决定发生了密钥更改操作,并为我创建重新分区主题。在使用DSL时,有没有什么方法可以覆盖这种行为?
我知道我可以使用处理器API和状态存储手动完成此操作,但我想知道是否有一种方法可以使用DSL完成此操作,或者这不是一种选择。

9o685dep

9o685dep1#

这是不可能的,现在,即到Apache Kafka 3.6。
已经有一个新的操作符markAsPartitioned()来填补这个空白。KIP-759已经被接受,很可能会随3.7.0版本一起发布。

相关问题