【发布时间】:2017-07-15 10:54:48
【问题描述】:
我有一个@Configuration 类如下:
@Configuration
public class SampleKieConfiguration {
@Bean
public KieServices kieServices() {
return KieServices.Factory.get();
}
@Bean
public KieContainer kieContainer() {
ReleaseId releaseId = kieServices().newReleaseId("groupId", "artifactId", "version");
KieContainer kieContainer = kieServices().newKieContainer(releaseId);
kieServices().newKieScanner(kieContainer).start(10_000);
return kieContainer;
}
@Bean
public KieBase kieBase() {
KieBaseConfiguration kieBaseConfiguration = kieServices().newKieBaseConfiguration();
kieBaseConfiguration.setOption(EqualityBehaviorOption.EQUALITY);
kieBaseConfiguration.setOption(EventProcessingOption.CLOUD);
return kieContainer().newKieBase(kieBaseConfiguration);
}
}
kieServices().newKieScanner(kieContainer).start(10_000); 行基本上轮询远程 maven 存储库并每 10 秒刷新一次 kieContainer 对象,如果有新的工件。
在我的上层(例如服务层)的某个地方,我有:
@Service
@RefreshScope
public class SampleService {
@Autowired
private KieBase kBase;
}
当我调用/refresh 端点时,据我所知,kBase 对象没有刷新(至少没有使用新的kieContainer 对象)。我没有集中配置,当我致电/refresh 时收到警告。我想要实现的是每次刷新kieContainer 时都有一个新的kBase 对象。我怎样才能做到这一点?谢谢!
【问题讨论】:
标签: java spring spring-boot spring-cloud spring-cloud-config