Spring Kinesis消费者太慢了

时间:2018-03-12 06:47:55

标签: java spring spring-cloud amazon-kinesis spring-cloud-stream

在Windows 7,Java 8上运行的消费者。

消费者在1-5秒内阅读1次按摩。我的设置有什么问题?

消费者:

@EnableBinding({Sink.class})
@SpringBootApplication
public class SpringCloudStreamKinesisConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudStreamKinesisConsumerApplication.class, args);
    }

    @StreamListener(Sink.INPUT)
    public void logger(String payload) {
        System.out.println("consumer received: " + payload);
    }
}

消费者application.yml:

spring:
  cloud:
    stream:
      bindings:
        input:
          destination: test_stream
          content-type: application/json
          consumer:
            idleBetweenPolls: 250

使用者项目是同一项目中的一个模块,它继承自以下pom:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-stream-kinesis</artifactId>
    <version>1.0.0.M1</version>
</dependency>

Kinesis活页夹忽略这些设置:

enter image description here

我在调试时手动更改了此参数,但消费者在10秒内收到1-2个元素+ - 。有什么问题?

1 个答案:

答案 0 :(得分:1)

这确实是一个问题,@ Stav Alfi。

KinesisMessageChannelBinder注入KinesisExtendedBindingProperties后,我看到了适当的属性群。

因此配置应该是这样的:

spring:
  cloud:
    stream:
      kinesis:
        bindings:
          input:
            consumer:
              idleBetweenPolls: 250

我会尽快解决上述问题。希望我们今天能够发布M2。

感谢您的耐心等待!

关于缓慢的消费速度:不要忘记你向Kinesis流发送消息的速度有多快,并且还要记住生产者和消费者之间真的有些延迟。换句话说,AWS Kinesis有一些合理的延迟,可以使记录可供使用。

有关详细信息,请参阅AWS FAQ

  

您可以不断向数十万来源的Amazon Kinesis数据流添加各种类型的数据,例如点击流,应用程序日志和社交媒体。几秒钟内,您的Amazon Kinesis应用程序将可以从流中读取和处理数据。