Amazon Kinesis Stream 名称未按照提供的 application.yml 文件获取

问题描述 投票:0回答:1

我有一个使用 Amazon Kinesis 来消费数据的 Spring Boot 应用程序。 它使用了错误的流名称 我需要使用的实际名称是:“test-test.tst.v1”

但它使用:“kinesisConsumer-in-o”

在我的项目中使用以下依赖项 实现 'org.springframework.cloud:spring-cloud-stream-binder-kinesis:4.0.2'

我的application.yml文件

spring:
  cloud:
    aws:
      credentials:
        sts:
          web-identity-token-file: <Where i had given the token file path>
          role-arn: <Where i had given the assume role arn>
          role-session-name: AssumedRoleSession
      region:
        static: <where i had given my aws region>
      dualstack-enabled: false
    stream:
      kinesis:
        binder:
          auto-create-stream: false
          min-shard-count: 1
      bindings:
        input-in-0:
          destination: test-test.tst.v1
          content-type: text/json
    function:
      definition: kinesisConsumer

下面是java类,其中包含用于处理来自Kinesis的数据的bean

@Configuration
public class KinesisConsumerBinder{
   @Bean
   Consumer<String> kinesisConsumer(){
      return str ->{
        System.out.println("Data from Kinesis:"+str)
      }
   }

}

当我检查日志时,kinesis 流名称自动更改,上面的 yml 配置没有任何更改。不是采用“test-test.tst.v1”,而是采用“kinesisConsumer-in-o”

当我检查日志时,我可以看到以下日志

main]o.s.c.s.b.k.p.KinesisStreamProvisioner :使用 Kinesis 流进行入站:kinesisConsumer-in-o

我的期望是:它应该将流名称作为“test-test.tst.v1”而不是“kinesisConsumer-in-o”

spring-boot spring-cloud-stream amazon-kinesis
1个回答
0
投票

你有这样的配置:

  bindings:
    input-in-0:
      destination: test-test.tst.v1

但是你的函数是这样的:

Consumer<String> kinesisConsumer(){

因此,您的属性和真正的绑定名称之间没有任何联系,这确实是

kinesisConsumer-in-0

我相信你可以这样解决你的问题:

  bindings:
    kinesisConsumer-in-0:
      destination: test-test.tst.v1
© www.soinside.com 2019 - 2024. All rights reserved.