【问题标题】:How to pause consumers from consuming messages in spring cloud kinesis stream如何在 Spring Cloud Kinesis Stream 中暂停消费者消费消息
【发布时间】:2020-03-28 01:12:17
【问题描述】:

我正在寻找一种解决方案,以在下游服务关闭时暂停从应用程序本身的运动流中消费消息。我正在使用 spring-cloud-stream-binder-kinesis。没有明显的选择可以做到这一点。 KCL api 上似乎也没有选项。弹簧执行器绑定端点上有停止/暂停,这似乎不适用于 Kinesis。一种选择是使用 AWS SDK api 并执行拉动而不是 KCL/Spring 云的推送机制,并停止拉动断路器。

还有其他选择吗?

【问题讨论】:

    标签: spring-cloud-stream amazon-kinesis


    【解决方案1】:

    Kinesis 消费者(独立于库)根本不支持 pause/resume。 AWS Kinesis 中没有这样的概念。

    您确实可以使用start/stop 执行器端点进行特定绑定以控制其生命周期。

    不知道为什么说它不起作用:这部分与其他活页夹没有区别。

    【讨论】:

    • 在执行器/绑定暂停的响应中为假。这可能是它没有暂停的原因。不知道如何使 pausable 为真。
    • 再来一次:你不能pause Kinesis 消费者 - 没有这样的功能。这就是为什么那个电话总是false。您必须改用stop/start
    • 通过注入执行器使用的 BindingdEndpoint 类,我设法以编程方式停止和启动流的消耗。
    • 要添加更多关于使用执行器启动、停止绑定器的信息,它适用于流上的一个分片和 2 个消费者。但不适用于两个分片和两个消费者。在两个分片和两个消费者的情况下,一旦我们启动/停止绑定器,消费就变得不可预测,一个分片永远不会被消费。完成的测试是,带有 2 个分片和两个消费者 A 和 B 的流。当 A 和 B 都与第一个消耗两个分片时,首先工作正常。停止 A,B 工作正常。停止 B 然后启动 A 在这种情况下,其中一个分片上的记录在重新启动之前永远不会被消耗。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2018-05-13
    • 2016-06-21
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2017-09-23
    相关资源
    最近更新 更多