Spring Cloud Stream Kinesis Binder 4.0多流模式兼容问题咨询
Spring Cloud Stream Kinesis Binder 4.0 多流消费问题及解决方案咨询
KCL 2支持在同一应用的同一消费者组中使用多流模式,但Spring Cloud Stream Kinesis Binder 4.0开启kpl-kcl-enabled: true时,仅单流配置能正常工作:
bindings: kinesis-read-binding: destination: stream1 group: consumergroupname binder: kinesis
此时租赁表的leaseKey为shardId。
当尝试在单个绑定中配置多流(如streamA,streamB)并使用同一消费者组时,应用会因覆盖其他流分片的租赁而异常:
bindings: kinesis-read-binding: destination: streamA,streamB group: consumergroupname binder: kinesis
经源码排查,非multiplex模式下,BindingService会遍历每个流创建独立的KCLMessageDrivenChannelAdapter实例,导致租赁表未使用MultiStreamTracker,进而覆盖其他流分片。
开启multiplex模式时:
bindings: kinesis-read-binding: destination: streamA,streamB group: consumergroupname binder: kinesis consumer: multiplex: true
KinesisStreamProvisioner的provisionConsumerDestination()方法会抛出异常,因为createOrUpdate方法传入的stream参数是“streamA,streamB”,调用getShardList(stream).join()时失败,导致无法支持KCL 2.x的多流模式,特此咨询解决方案。
内容的提问来源于stack exchange,提问作者siddharth Jain
相关产品推荐
相关产品推荐

