Spring 启动,Spring 集成 RabbitMQ 和 AWS Kinesis 集成

Spring Boot , Spring Integration RabbitMQ & AWS Kinesis Integration

我需要使用来自 rabbitMQ 的消息,进行一些处理并最终将消息发布到 Kinesis 数据流。 我们已经在使用 Spring Boot、Spring Integration Core 和 Spring Integration AQMP 5.5.1 Integration Flows 来使用来自 RabbitMQ 的消息。我们的任何项目都没有使用 Spring Cloud Stream。

对于将消息发布到 Kinesis 数据流的用例,您建议使用什么 spring 库?在浏览 Spring 文档后,我看到了几个可用的选项。你能告诉我哪个是最好的追求吗?

  1. spring-cloud-stream-binder-aws-kinesis
  2. spring-集成-aws

只要您不关心 Spring Cloud Stream,就不应将 Spring Cloud Stream 依赖项的 AWS Kinesis Binder 引入您的项目。仅仅因为如果您的项目中没有 Spring Cloud Stream 功能,它就无法工作。

由于您的应用程序确实是一个 Spring 集成应用程序,因此您肯定需要使用该 Spring AWS 依赖集成。它带有一个 KinesisMessageHandler 实现,用于将记录生成到 Kinesis 流中。

查看其文档以获取更多信息:https://github.com/spring-projects/spring-integration-aws#outbound-channel-adapter-3. Such a handler should be declared as a bean and can be used in the .handle() endpoint of an IntegrationFlow definition. See docs about existing handlers and missed Java DSL factories: https://docs.spring.io/spring-integration/docs/current/reference/html/dsl.html#java-dsl-protocol-adapters

更新

如何在 Java DSL 中使用 Kinesis MH:

@Bean
public MessageHandler kinesisMessageHandler(AmazonKinesis amazonKinesis) {
    KinesisMessageHandler kinesisMessageHandler = new KinesisMessageHandler(amazonKinesis);
    return kinesisMessageHandler;
}

@Bean
IntegrationFlow someFlow(MessageHandler kinesisMessageHandler) {
    return f -> f
              .handle(kinesisMessageHandler);
}