Kafka Streams 中用于流-流连接的默认 WindowBytesStoreSupplier 是什么?

What is the default WindowBytesStoreSupplier for stream-stream join in Kafka Streams?

新 API 的签名为:

join(KStream<K,VO> otherStream, ValueJoiner<? super V,? super VO,? extends VR> joiner, JoinWindows windows, StreamJoined<K,V,VO> streamJoined)

如果我只使用 StreamJoined<K,V,VO> streamJoined 参数设置商店名称,那么 WindowBytesStoreSupplierretentionPeriodwindowSize 和 [=15= 方面的默认配置是什么]?从文档中不清楚。这是内存状态存储吗?还是 Kafka Streams 默认配置的?

如果您只设置商店名称 StreamJoined 那么:

  1. windowSize 来自您提供的 JoinWindows 配置对象。即使您使用自定义 WindowBytesStoreSupplier,Kafka Streams 也会验证供应商 window 设置是否与提供的 JoinWindows 对象的设置相匹配。所以 JoinWindows.of(Duration.ofSeconds(30))windowSize 等于 30000 ms.
  2. retentionPeriod是window大小+宽限期。默认宽限期为 24 小时。
  3. retainDuplicates配置为true。但即使在提供自定义 StoreSupplier 时,retainDuplicates 字段也必须设置为 true.
  4. 存储类型是持久性 (RocksDB) 存储,由 Kafka Streams 配置,如上所述。

此外,请注意,使用 StreamJoined,您现在可以为连接的双方提供自己的 StoreSupplier,因此可以在内存中存储。

HTH,

比尔