【问题标题】:Spring Serverless HTTP PollerSpring 无服务器 HTTP 轮询器
【发布时间】:2020-07-26 09:52:00
【问题描述】:

我想实现一个无服务器函数来轮询 HTTP 端点并将响应发布到消息队列。

我最初的想法是使用 Spring 集成网关和适配器构建一个 Spring Boot 应用程序,用于 HTTP 轮询和发布到队列(并部署为 lambda)。 spring 堆栈中是否有更好的选择?

我看了spring cloud function,spring cloud stream,spring cloud task。有什么建议吗?

【问题讨论】:

    标签: spring-boot spring-integration spring-amqp spring-cloud-task spring-cloud-function


    【解决方案1】:

    在 Spring Cloud Stream 中,这种类型的微服务称为 source。因此,您需要有一个基于 Spring Integration Java DSL 的 Supplier bean 来构建一个简单的流程,让 Spring Cloud Stream 定期轮询它并生成一个结果到绑定的目的地。

    类似这样的:

        @Bean
        public IntegrationFlow pollingHttpFlow() {
            return IntegrationFlows
                    .from(Supplier.class, gateway -> gateway.beanName("httpSupplier"))
                    .handle(Http.outboundGateway("http://somehost"))
                    .get();
        }
    

    查看有关这种互操作性的博文:https://spring.io/blog/2019/10/25/spring-cloud-stream-and-spring-integration

    【讨论】:

    • 我没有输入和返回参数。我从应用程序配置(application.yaml)中读取,进行 HTTP 调用并通过 AMQP 发送结果(所有这些都是 Spring 集成流程)。在这种情况下,我该如何编写函数,因为没有 return 也没有 param,所以不能使用 Function、Supplier、Consumer 中的任何一个(我可以像使用虚拟返回值并使用 Supplier,但没有意义)。将其作为 AWS Lambda 实施的最佳方式是什么?可能是我错过了一些非常基本的东西吗?我的入口点是一个网关类,其方法类似于 getData(Collection configs)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    相关资源
    最近更新 更多