我有一个使用 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”
你有这样的配置:
bindings:
input-in-0:
destination: test-test.tst.v1
但是你的函数是这样的:
Consumer<String> kinesisConsumer(){
因此,您的属性和真正的绑定名称之间没有任何联系,这确实是
kinesisConsumer-in-0
。
我相信你可以这样解决你的问题:
bindings:
kinesisConsumer-in-0:
destination: test-test.tst.v1