spring消费者

ulmd4ohb  于 2021-06-04  发布在  Kafka
关注(0)|答案(0)|浏览(196)

目前,我使用的是基于springboot和kcl库的aws kinesis流,只有一个shard和一个consumer。
现在我需要扩展我的应用程序并在两个使用者之间分配负载。因此,他们应该在一个消费者群体中-以避免对同一消息进行双重处理。
基于动觉文件-我应该有相同数量的碎片作为最大数量的消费者在一个消费群体。我又加了一块碎片。
当我运行第一个使用者时,它会锁定dynamodb中的两个碎片,第二个使用者在我停止第一个使用者之前不会收到任何消息。
我读到我可以尝试改变 spring.cloud.stream.bindings.<streamName>.consumer.concurrency 属性到 1 每个使用者将只能创建一个到一个shard的连接。我不知道如果一个消费者死了我会面对什么?因为另一个消费者被限制只有一个连接,所以永远不会从第二个shard消费数据?
我的配置:

Kinesis stream: events
Number of shards: 2
Consumer#1: spring.cloud.stream.bindings.eventsIn.group=eventsConsumer
            spring.cloud.stream.bindings.eventsIn.destination=events
            spring.cloud.stream.bindings.eventsIn.content-type=application/json

Consumer#2: spring.cloud.stream.bindings.eventsIn.group=eventsConsumer
            spring.cloud.stream.bindings.eventsIn.destination=events
            spring.cloud.stream.bindings.eventsIn.content-type=application/json

如何在这两个消费者之间分配负载?如果我不使用任何基于kinesis流的额外aws集成,也许是时候从kinesis迁移到kafka了?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题