首页 > 其他分享 >Spring Cloud Azure 适配器参考

Spring Cloud Azure 适配器参考

时间:2022-12-01 10:07:41浏览次数:39  
标签:插件 函数 示例 Spring 适配器 azure Azure

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>, String> {

@FunctionName("uppercase")
public String execute(@HttpTrigger(name = "req", methods = {HttpMethod.GET,
HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
ExecutionContext context) {
Message<String> 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>, 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>, 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://<azure-function-url-from-the-log>/api/uppercase -d '{"value": "hello foobar!"}'​

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

{
"value": "foobar"
}

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

标签:插件,函数,示例,Spring,适配器,azure,Azure
From: https://blog.51cto.com/u_15326439/5901155

相关文章

  • Spring Cloud GCP 适配器参考
    谷歌云函数GoogleCloudFunctions适配器使SpringCloudFunction应用程序能够在GoogleCloudFunctions无服务器平台上运行。您可以使用开源的GoogleFunctionsFrame......
  • Spring Boot实现任意位置的properties及yml文件内容配置与获取
    〇、参考资料1、SpringBoot中文乱码问题解决方案汇总https://blog.51cto.com/u_15236724/53728242、springboot读取自定义配置properties文件★https://www.yisu.co......
  • SpringBoot项目出现404错误--且控制台无任何信息
    直接上链接:(138条消息)SpringBoot项目出现404错误_露天赏雪的博客-CSDN博客_springboot404我自己的错误原因:有启动类的包,也有自己的包,但包不在一起,所以根本访问不到自己......
  • vuecli3项目集成到springboot
    路径配置当springboot中设置项目访问路径server.servlet.context-path=/demovue项目中vue.config.js需配置publicPathmodule.exports={transpileDependenc......
  • Spring Boot中添加Thymeleaf模板
    SpringBoot中添加Thymeleaf模板前面我们讲解了SpringBoot项目的创建、SpringBoot结构信息,自动配置功能等,那么Springboot创建出来,我们最终是要做web开发的,所以我们这章讲......
  • Spring Boot中添加Thymeleaf模板
    SpringBoot中添加Thymeleaf模板前面我们讲解了SpringBoot项目的创建、SpringBoot结构信息,自动配置功能等,那么Springboot创建出来,我们最终是要做web开发的,所以我们这......
  • Spring5 整合 Hibernate5 学习
    Spring5整合Hibernate5学习XML配置文件代码如下[html] ​​viewplain​​ ​​copy​​<?xml version="1.0" encoding="UTF-8"?>  <beans xmlns="http://www.spr......
  • spring4+springmvc+hibernate5的maven整合
    首先,依赖包的下载,看以下的pom.xml [html] ​​viewplain​​ ​​copy​​<dependencies>      <dependency>        <groupId>junit</groupId>    ......
  • 理解Spring 容器设计理念
    概述Spring是为了解决企业应用程序开发复杂性而创建的开源框架,书店上关于Spring的书籍汗牛充栋,网上相关的文章连篇累牍,其中有很多写的很不错的,有入门例子的,有问题解决方案的......
  • day42 6-5 springMVC调度器、ModelAndView、配置thymeleaf模板引擎 & 6-6 thymeleaf语
    springMVC调度器-DispatcherServlet-SpringMVC框架的入口定义DispatcherServlet成为调度器,配置在web.xml文件中,用于拦截匹配的请求。并解析请求url,将请求分发给对应......