使用 Java 和 Spring 的 AWS kinesis 消费者

Posted

技术标签:

【中文标题】使用 Java 和 Spring 的 AWS kinesis 消费者【英文标题】:AWS kinesis consumer with Java and Spring 【发布时间】:2018-06-20 22:00:47 【问题描述】:

我想在 Spring Boot 应用程序中编写 AWS kinesis 流使用者。而且我不确定 Spring 是否具有对 kinesis 的本机支持,或者我必须使用 kinesis client library。

根据this blog post org.springframework.integration:spring-integration-aws 有它(RELEASE 在 maven repo 中可用)。但是,此示例 on GitHub 使用 org.springframework.cloud:spring-cloud-starter-stream-kinesis,它仅在 1.0.0.BUILD-SNAPSHOT 下的 Spring 快照存储库中可用。

编辑:问题是,我在哪里可以找到KinesisMessageDrivenChannelAdapter 的示例?

【问题讨论】:

【参考方案1】:

虽然不清楚是什么问题。

如果您正在寻找样品,确实没有样品。没错,我们在 Spring 中的解决方案绝对是 Spring Integration 的 Channel Adapter。 KinesisMessageDrivenChannelAdapter 正是 AWS Kinesis 的消费者实现:

@SpringBootApplication
public static class MyConfiguration 

    @Bean
    public KinesisMessageDrivenChannelAdapter kinesisInboundChannelChannel(AmazonKinesis amazonKinesis) 
        KinesisMessageDrivenChannelAdapter adapter =
            new KinesisMessageDrivenChannelAdapter(amazonKinesis, "MY_STREAM");
        adapter.setOutputChannel(kinesisReceiveChannel());
        return adapter;
    

您在 GitHub 上找到的示例适用于 Spring Cloud Stream,并且基于确实仍在开发中的 Kinesis Binder。

【讨论】:

感谢您的回复!那么其他项目(Kinesis binder)是否打算在未来取代 Channel Adapter? 不,它完全基于那个 Channel Adapter,只是为 Spring Cloud Stream 提供 Binder 基础设施:cloud.spring.io/spring-cloud-stream 好的,我把问题改成了 KinesisMessageDrivenChannelAdapter 的例子 好的。但仍然不确定您还想从我们这边听到什么。您可以查看项目中的测试:github.com/spring-projects/spring-integration-aws/blob/master/… 我将查看测试并尝试基于它们构建一个示例。如果我有更具体的问题,我会发布它们。谢谢!

以上是关于使用 Java 和 Spring 的 AWS kinesis 消费者的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot、Spring Cloud AWS 和 AWS SQS 未从队列中读取

关闭 Spring Boot AWS 自动配置

使用 IAM 身份验证和 Spring JDBC(DataSource 和 JdbcTemplace)访问 AWS RDS

AWS Elastic Beanstalk - tomcat java spring boot 应用程序的问题

Spring Boot + Flyway + AWS:原因:java.sql.SQLException:找不到合适的驱动程序

AWS Elastic Beanstalk 上的 Java 应用程序会话超时