【发布时间】:2021-04-16 21:23:10
【问题描述】:
下面的代码在主类的INIT方法中
system.scheduler()
.scheduleAtFixedRate(Duration.ZERO,
Duration.ofMinutes(settings.getInterval()),
readActor,TriggerBatch.fromTimer(),
system.dispatcher(),
ActorRef.noSender());
一旦业务逻辑被执行,即 receiveBuilder() 方法,那么 我需要在运行时更改 Duration.ofMinutes 值
我尝试了以下解决方案
solution 1.
Config config = new CachingConfig(ConfigFactory.load());
Config config1 = config.withValue("service-
name.scheduler.interval",ConfigValueFactory.fromAnyRef("20"));// in application.conf value for interval is =1
config1.getInt("service-name.scheduler.interval");
solution 2.
Config overrides = ConfigFactory.parseString("service-name.scheduler.interval=20");
Config actualConfig = overrides.withFallback(ConfigFactory.load());
actualConfig.getInt("service-name.scheduler.interval");
此解决方案有效,但调度程序没有采用更新的值,它仍然采用旧的值,即 service-name.scheduler.interval = 1
【问题讨论】:
标签: java akka akka-stream akka-http