我正在尝试使用 Spring Cloud Function 2.0 将供应商 Bean 映射到 Azure 函数,但我需要扩展 AzureSpringBootRequestHandler,它似乎只支持具有输入参数和返回值的函数。AzureSpringBootRequestHandler 类有两个类型参数:输入和输出,AzureSpringBootRequestHandler.handleRequest() 也需要输入参数。
@Bean
public Supplier<List<String>> foo() {
return () -> Arrays.asList("foo1", "foo2");
}
/////
class FooFunction extends AzureSpringBootRequestHandler<Void, List<String>> {
@FunctionName("foo")
List<String> foo(@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
ExecutionContext context) {
return handleRequest(null, context);
}
}
上面的代码在 reactor.core.publisher.FluxJust.(FluxJust.java:60) 导致 NPE
在 AzureSpringFunctionInitializer.lookup 将 @Bean 返回类型更改为Function<Void, List<String>>
导致 IllegalStateException“没有使用 name=foo 定义的函数”
添加一个虚拟 int 参数有效。
PS 理想情况下,我什至不需要返回值,所以我会代替供应商将其设为 Runnable,但这似乎完全不受支持。
任何帮助,将不胜感激。