返回

Spring Cloud Azure 适配器参考

发布时间:2022-12-08 04:01:44 294
# webkit# spring# json# 信息# 扫描

Spring Cloud Azure 适配器参考_spring

微软 Azure

Azure 适配器启动 Spring 云函数上下文,并从Azure引导函数调用 框架到用户函数中,必要时使用 Spring 引导配置。Azure Functions 具有相当独特和 侵入性编程模型,涉及特定于 Azure 平台的用户代码中的批注。 但是,重要的是要了解,由于Spring Cloud Function提供的集成风格,特别是这种基于注释的编程模型只是一种类型安全的配置方式。 要识别为 Azure 函数的简单 Java 函数(无法识别 Azure 的函数)。 您需要做的就是创建一个扩展、定义和配置函数处理程序方法的处理程序,并且 进行回调方法。此处理程序方法将输入和输出类型作为带批注的方法参数提供 (使 Azure 能够检查类并创建 JSON 绑定)。​​org.springframework.cloud.function.adapter.azure.FunctionInvoker​​​​FunctionInvoker​​​​handleRequest(..)​

public class UppercaseHandler extends FunctionInvoker<Message, String> {

@FunctionName("uppercase")
public String execute(@HttpTrigger(name = "req", methods = {HttpMethod.GET,
HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional> request,
ExecutionContext context) {
Message message = MessageBuilder.withPayload(request.getBody().get()).copyHeaders(request.getHeaders()).build();
return handleRequest(message, context);
}
}

请注意,除了通过 Azure 注释提供配置的表单之外,我们在此处理程序方法的主体内创建一个实例,并对返回其结果的方法进行回调。​​Message​​​​handleRequest(..)​

您要延迟的实际用户功能如下所示

@Bean
public Function<String, String> uppercase() {
return payload -> payload.toUpperCase();
}

OR

@Bean
public Function<Message, String> uppercase() {
return message -> message.getPayload().toUpperCase();
}

请注意,在创建消息时,您可以有效地复制 HTTP 标头,以便在必要时使用它们。

该类有两个有用的 可以将实际函数调用委托给的方法(and),因此大多数情况下该函数将只有一行。​​org.springframework.cloud.function.adapter.azure.FunctionInvoker​​​​handleRequest​​​​handleOutput​

函数名称(定义)将从 Azure 的方法中检索,从而有效地支持应用程序上下文中的多个函数。​​ExecutionContext.getFunctionName()​

访问 Azure ExecutionContext

有时需要以 的形式访问 Azure 运行时提供的目标执行上下文。 例如,其中一个需求是日志记录,因此它可以显示在 Azure 控制台中。​​com.microsoft.azure.functions.ExecutionContext​

为此,FunctionInvoker 将添加一个实例作为消息标头,以便您可以通过 Trusted 检索它。​​ExecutionContext​​​​executionContext​

@Bean
public Function<Message, String> uppercase(JsonMapper mapper) {
return message -> {
String value = message.getPayload();
ExecutionContext context = (ExecutionContext) message.getHeaders().get("executionContext");
. . .
}
}

关于JAR布局的说明

在 Azure 中运行时不需要 Spring Cloud Function Web,因此可以排除此 在创建部署到 Azure 的 JAR 之前,但如果包含它,则不会使用它,因此 把它留在里面也无妨。Azure 上的函数应用程序是由 Maven插件。该函数位于此项目生成的 JAR 文件中。 此示例使用精简布局将其创建为可执行 jar,以便 Azure 可以找到 处理程序类。如果您愿意,可以只使用常规的平面JAR文件。 不应包含依赖项。

构建文件设置

为了在Microsoft Azure上运行Spring Cloud Function应用程序,您可以利用Maven 云平台提供商提供的插件。

为了将适配器插件用于Maven,请将插件依赖项添加到您的文件中:​​pom.xml​

<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-function-adapter-azure</artifactId>
</dependency>
</dependencies>

然后,配置插件。需要为你的 Azure 提供特定于 Azure 的配置 应用程序,指定 和其他可选属性,以及 添加目标执行,以便 Azure 所需的文件是 为您生成。完整的插件文档可以在插件存储库中找到。​​resourceGroup​​​​appName​​​​package​​​​function.json​

<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-functions-maven-plugin</artifactId>
<configuration>
<resourceGroup>${functionResourceGroup}</resourceGroup>
<appName>${functionAppName}</appName>
</configuration>
<executions>
<execution>
<id>package-functions</id>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>

您还必须确保插件要扫描的文件可以在 Azure 函数暂存目录(有关暂存目录及其默认位置的更多详细信息,请参阅插件存储库)。

您可以找到用于部署 Spring Cloud 函数的完整示例文件 应用程序到Microsoft Azure与Maven在这里。​​pom.xml​

到目前为止,只有Maven插件可用。Gradle 插件尚未由 云平台提供商。

./mvnw -U clean package
运行示例

您可以在本地运行示例,就像其他 Spring Cloud 函数示例一样:



和。​​curl -H "Content-Type: text/plain" localhost:8080/api/uppercase -d '{"value": "hello foobar"}'​

您将需要 CLI 应用程序(有关更多详细信息,请参阅https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-java-maven)。若要在 Azure 运行时上部署函数,请执行以下操作:​​az​

$ az login
$ mvn azure-functions:deploy

在另一个终端上尝试这个:。请确保为上述功能使用正确的 URL。或者,可以在 Azure 仪表板 UI 中测试函数(单击函数名称,转到右侧并单击“测试”,然后单击右下角的“运行”)。​​curl https:///api/uppercase -d '{"value": "hello foobar!"}'​

Azure 示例中函数的输入类型是具有名为“值”的单个属性的 Foo。所以你需要这个来测试它,如下所示:

{
"value": "foobar"
}

Azure 示例应用以“非功能性”样式(使用)编写。函数式样式(使用 justor)在 Azure 中启动时比传统样式快得多,因此,如果您不需要(或)这是一个不错的选择。热启动不受影响。​​@Bean​​​​Function​​​​ApplicationContextInitializer​​​​@Bean​​​​@Beans​​​​@EnableAutoConfiguration​

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线