我正在尝试构建自己的 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-function-deployer 如何在运行时部署/取消部署功能?