spring-cloud函数部署器如何在运行时部署/取消部署函数



我正在尝试构建自己的faas服务。我想支持在运行时加载函数。

@SpringBootApplication
@EnableScheduling
public class DeployerApplication {
FunctionCatalog catalog;
@Scheduled(cron = "0/5 * * * * ?")
void loadSomething() {
String[] args = new String[]{
"--spring.cloud.function.location=./faas-function/target/faas-function-1.0-SNAPSHOT-boot.jar",
"--spring.cloud.function.function-class=com.example.Tmp"};
ApplicationContext context = SpringApplication.run(TmpApplication.class, args);
catalog = context.getBean(FunctionCatalog.class);
}
public static void main(String[] args) {
SpringApplication.run(DeployerApplication.class, args);
}
@SpringBootApplication(proxyBeanMethods = false)
private static class TmpApplication {
}
}

但当我运行这些代码时,我得到了

Caused by: javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication
at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437) ~[na:1.8.0_201]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898) ~[na:1.8.0_201]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966) ~[na:1.8.0_201]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) ~[na:1.8.0_201]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) ~[na:1.8.0_201]
at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) ~[na:1.8.0_201]
at org.springframework.boot.admin.SpringApplicationAdminMXBeanRegistrar.afterPropertiesSet(SpringApplicationAdminMXBeanRegistrar.java:129) ~[spring-boot-2.4.0.jar:2.4.0]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1847) ~[spring-beans-5.3.1.jar:5.3.1]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1784) ~[spring-beans-5.3.1.jar:5.3.1]
... 32 common frames omitted

spring-cloud函数部署器如何在运行时部署/取消部署函数?

你的问题很宽泛,所以。项目git存储库中有一个集成测试用例,以及演示几个受支持场景的单个项目(我相信你会找到适合你的(,请看一看,并随时提出更具体的问题。

最新更新