如何使用Spring Cloud函数公开多个功能终点



我有一个带有两个声明的函数"小写"one_answers"大写"的spring cloud函数应用程序。如果我以常规 @springbootapplication 的形式创建应用程序,并以 @beans (函数bean)的方式注释两个函数,则一切正常。这两个功能均通过单独的HTTP端点暴露,我可以通过以下方式调用这些功能。

  • curl localhost:8080/uppercase -h" content -type:text/plain" -d'-d'我的我的输入文本'
  • curl localhost:8080/lowercase -h" content -type:文本/普通" -d'我的输入文本'

现在,我将应用程序的主类转换为"函数表单"以改善应用程序启动时间(如官方文档中所建议:http://cloud.spring.io/spring-cloud-cloud-function/multi/multi/multi __functional_bean_bean_definitions.html):

@SpringBootConfiguration
public class LambdaMicroserviceApplication implements ApplicationContextInitializer<GenericApplicationContext> {
    public Function<String, String> uppercase() {
        return String::toUpperCase;
    }
    public Function<String, String> lowercase() {
        return String::toLowerCase;
    }
    public static void main(String[] args) {
        FunctionalSpringApplication.run(LambdaMicroserviceApplication.class, args);
    }
    @Override
    public void initialize(GenericApplicationContext context) {
        context.registerBean("uppercase", FunctionRegistration.class,
            () -> new FunctionRegistration<>(uppercase())
                    .type(FunctionType.from(String.class).to(String.class)));
        context.registerBean("lowercase", FunctionRegistration.class,
            () -> new FunctionRegistration<>(lowercase())
                    .type(FunctionType.from(String.class).to(String.class)));
    }
}

问题:

唯一的一个单端点现在直接在根路径上暴露:

curl localhost:8080/-h" content -type:text/plain" -d'我的输入文本'

它在内部调用"大写"函数,无论初始化函数中的bean的注册顺序如何。

问题:

是否有一种方法可以通过其专用端点再次调用两个函数: localhost:8080/uppercase localhost:8080/lowercase

事实证明,这实际上是弹簧云功能功能形式的缺少功能。现在在版本2.1.0.m1。

中实现

请参阅:https://github.com/spring-cloud/spring-cloud-function/issues/293

相关内容

  • 没有找到相关文章

最新更新