问题标签 [spring-cloud-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
142 浏览

spring-boot - Spring 无服务器 HTTP 轮询器

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

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

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

0 投票
1 回答
682 浏览

kotlin - 如何使用 spring-cloud-function 使用 Kafka-events,但有时会产生

我已经在 Kotlin 中使用 kafka-streams 成功设置了 spring-cloud-function 并拥有一个工作原型。

我有一个函数可以接收来自一个主题的事件并为另一个主题生成另一个事件。

这是我的application.yml

我的 kotlin 应用程序如下所示:

我在互联网上关注了许多例子,它就像一个魅力。只要将消息放入topicToConsumeFrom,就会调用该函数并将结果写入topicToProduceTo.


现在我的问题是: 如果我的函数并不总是产生某些东西,那么正确的处理方式是什么。服务侦听主题并忽略消息是一个非常常见的用例。它应该只对特定消息做出反应,然后才产生输出,否则什么也不做。我通过创建一个不同的生产者函数来尝试这一点,只有在适用的情况下我才会从消费者那里调用它:

这是我的改编application.yml,现在定义了两个不同的功能consumeproduce

在我的应用程序中,我重命名consumeAndProduce()consume(),返回值为 now Unit。此外,我创建了第二个 bean produce(),它只返回一个函数,该函数返回我提供给它的有效负载:

现在,consume()如果主题中存在消息并且消息是给我的,则调用 -function,我会做一些事情并produce()用我的结果调用 -function,否则什么也不做。

我无法在传出主题中看到任何消息。我通过调试知道它进入了 if-branch 并produce()使用我的结果调用,但似乎 kafka 绑定不起作用,并且没有真正发送任何消息。

我知道,我的方法有点幼稚,但经过广泛的研究,我找不到任何描述这个用例的东西。所有的例子总是有一个在所有情况下消费和产生的函数。

有正确的方法吗?

0 投票
1 回答
228 浏览

spring - Spring JAR 文件很大,虽然项目很小

我有一个小Spring Boot项目,我使用 aSpring Cloud Function来部署AWS.

应用程序是做什么的?

  • 作为端点的功能
  • 连接一些小数据并将其写入 DynamoDB 数据库
  • 转发到 URL(状态码 302)

将该项目打包为jar文件时,我得到一个40,3 MB 的大文件...

Lambda将该文件作为(云功能)部署到 AWS 时,20-30 seconds需要冷启动- 太多了!

对于我的情况,用户在调用 lambda 后进入网页……让用户等待 20-30 秒才能进入网页并不好。

这是我的 pom.xml:

获得一个非常薄的小罐子来调用云功能是否缺少一些东西?

谢谢!

0 投票
1 回答
622 浏览

routes - 带有路由的香草 Spring Cloud 功能

作为 Spring Cloud 中的新成员,我正在开发与 spring-cloud-function-starter-web ( 3.0.9.RELEASE ) 依赖关系良好的多功能 Spring Cloud 功能应用程序。注意:我在不同的包中有不同的功能,下面的配置可以正常工作。

例如,[POST] localhost:8080/func1它正在调用Func1 implements Function<I, O>. 现在我要介绍路由。为此,我只更改了以下内容application.yml

现在当我调用 using

例外是

现在,当我查看找到的代码时,RequestProcessor具有以下功能

看起来,默认情况下,它需要消息头中的“function.name”以便路由,因此我想routing-expression在 application.yml 中注释掉行,它进入无限循环导致 stackoverflow 错误

我做错什么了吗?即使这可行,它会根据spring.cloud.function.scan.packages属性识别我拥有的不同功能吗?请帮忙。另外我还有两个问题,

  1. 在一些博客/帖子/文档中,我似乎可以通过spring.cloud.function.definitionhttp 标头。如果这适用于这个 3.0.9.RELEASE,那么我是否需要在 application.yml 中提及相同的属性?

  2. 我可以spring.cloud.function.definition=func1;func2在不使用的情况下使用routingFunction并期望路由行为正常工作吗?或者这是为了其他功能?

由于上述问题,我从未测试/玩过不同的配置选项。请原谅我对春云的一点了解,或者如果我问了任何幼稚的问题。

编辑

经过调试并在Spring 文档的帮助下,我找到了正确的配置

使用此配置,它能够将消息路由到我的函数,但仅限于第一次。现在,这让我完全困惑。一旦我启动应用程序并从邮递员那里点击,它就能够识别实际功能并将输入转换GenericMessage为预期的(尽管稍后无法解析请求正文)。但是当我第二次(及以后)点击时,它甚至无法解析我对 GenericMessage 的输入并给我不同的错误。这是可重复的行为。

供参考请找到两个连续请求的日志(连同邮递员卷曲)

第一个请求:正确路由 第二个请求:路由失败

0 投票
0 回答
185 浏览

maven - 云函数抛出错误找不到私有 git 存储库中的工件

我正在尝试部署一个依赖于私有 GitLab Maven 存储库的 Spring Cloud 功能。尽管在 settings.xml 中给出了令牌,但 spring 云函数构建失败并出现以下错误:

设置.xml

POM.xml

相同的代码在本地以及 GKE 集群中运行。我无法调试。有没有办法在云函数中运行 maven 命令来检查错误?

0 投票
0 回答
170 浏览

spring - 在 Spring Cloud 函数 + AWS Lamba + API 网关中访问查询参数

我正在使用带有 AWS Lambda 和 API Gateway 的 Spring 云功能。

以下是我的功能:

此外,我在 AWS Lambda 控制台中指定了如下处理程序:org.springframework.cloud.function.adapter.aws.FunctionInvoker::handleRequest

如果我发送一个带有字符串正文的请求,它就能够成功地收集输入。

但是我不明白,如何访问函数内部的请求查询参数?像这样:https://[apigateway].aws.com/[path]?param1=value

有人可以指导我吗?提前致谢。

0 投票
1 回答
249 浏览

rest - Spring cloud函数中处理REST参数的推荐方式

我真的很喜欢 Spring 云功能将业务逻辑与运行时目标(本地或云)分离并使其易于与无服务器提供程序集成的方式。

我计划在 API 网关后面使用 SCF 和 AWS Lambda 来设计系统的后端。

但是,我并不完全清楚在 Spring 云函数中处理 REST 相关参数(例如查询参数、标头、路径等)的推荐方法是什么。根据我们的初步分析,我们可以得出两种可能的方法:

  1. 在 API Gateway 中启用“Lambda 代理集成”时,查询参数和其他信息可作为 SCF 内的消息标头使用。
  2. 我们可以使用 API Gateway 中的“映射模板”将所有需要的信息映射到 JSON 正文中,并反序列化为 POJO,以将输入直接输入 SCF。这样,SCF 就无需担心所需数据是如何传递给 API 的。

实现这一目标的推荐方法是什么?我们是否缺少能够以更好的方式做到这一点的东西?

0 投票
1 回答
388 浏览

spring-cloud-stream - Spring Cloud 函数与死信交换

我正在尝试使用 RabbitMQ 编写一个反应式 Spring Cloud Function 服务,该服务将消耗一个队列并产生到一个交换。

我有 2 个问题。

  1. 为什么我在日志中收到以下错误。
  2. 我将如何使用 doOnError 拒绝?doOnError 只能访问 throwable,而不能访问拒绝的消息。

这是应用程序代码。它是从这个问题中复制的Spring Reactive Stream - Unexpected Shutdown

这是application.yml。它有 2 个不同的绑定器用于从队列传入和传出到交换。

以下是启动日志和应用程序接收事件的日志。我不确定为什么在启动过程中频道有订阅者,但是一旦收到消息,它就会说它没有订阅者。

0 投票
1 回答
425 浏览

apache-kafka - Google Functons 通过 spring-cloud-stream 和 spring-cloud-functions 从 Kafka 接收消息

我知道使用 Kafka Connect 您可以创建连接器将所有 kafka 消息接收到 PUBSUB 主题。

我想知道我是否可以将 Spring Cloud Stream 绑定器与 Spring Cloud Function 结合使用并将所有这些部署到 Google Functions。

在我理解正确的情况下,我可以结合 Spring Cloud Stream 和 Spring Cloud Function。这是否意味着我可以使用 Spring Cloud Stream 的 binder 来实际接受来自 Kafka 的消息?

0 投票
1 回答
347 浏览

kotlin - 如何从gcp中的spring cloud函数发回自定义http响应代码?

我们正在使用使用 Java / Kotlin 的新 gcp 云功能。

在当前的参考实现中,我们返回org.springframework.messaging.support.GenericMessage对象。

所以我们的代码看起来像这样(Kotlin):

我们无法找到任何方法在我们的消息中包含自定义 http 响应代码,例如 201 或其他内容。该函数仅在无异常或 500 的情况下响应 200。

有人知道这样做的方法吗?

最好的祝愿

安迪