Spring Cloud Azure功能
所述天青适配器自举一个Spring Cloud功能上下文和通道功能从天青框架呼叫到用户的功能,使用Spring Boot结构,其中必要的。Azure Functions具有一个非常独特但具有侵入性的编程模型,涉及特定于平台的用户代码中的注释。
与Spring Cloud一起使用的最简单方法是扩展基类,并在其中编写带有@FunctionName
批注的方法,该批注委派给基类方法。
该项目为Spring Cloud Function应用程序提供了到Azure的适配器层。您可以编写一个类型为Function
的单个@Bean
的应用程序,如果正确放置了JAR文件,则可以将其部署在Azure中。
必须扩展AzureSpringBootRequestHandler
,并提供输入和输出类型作为带注释的方法参数(使Azure能够检查类并创建JSON绑定)。基类有两个有用的方法(handleRequest
和handleOutput
),您可以将实际的函数调用委派给该方法,因此大多数情况下,该函数只会有一行。
例:
public class FooHandler extends AzureSpringBootRequestHandler<Foo, Bar> { @FunctionName("uppercase") public Bar execute( @HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.ANONYMOUS) Foo foo, ExecutionContext context) { return handleRequest(foo, context); } }
此Azure处理程序将委派给Function<Foo,Bar>
bean(或Function<Publisher<Foo>,Publisher<Bar>>
)。某些Azure触发器(例如@CosmosDBTrigger
)会导致输入类型为List
,在这种情况下,您可以绑定到Azure处理程序中的List
或String
(原始JSON)。
List
输入委托给输入类型为Map<String,Object>
或Publisher
或相同类型的List
的Function
。
Function
的输出可以是List
(一对一)或单个值(聚合),并且Azure声明中的输出绑定应该匹配。
如果您的应用具有多个Function
等类型的@Bean
等,那么您可以通过配置function.name
选择一个。或者,如果使Azure处理程序方法中的@FunctionName
与函数名称匹配,则它应以这种方式工作(也适用于具有多个函数的函数应用程序)。
这些功能是从Spring Cloud FunctionCatalog
中提取的,因此默认功能名称与bean名称相同。
更多建议: