私は最も簡単な解決策を開始することをお勧めします。タスククラスにとscheduled
方法でプライベートブールフィールドenabled
を作るtrue
に設定され、そのフィールドが、その後進めるかどうかを確認し、そうでない場合は、実行を停止します。その後
あなたがしなければならないすべては、JMXにあなたのタスク豆を公開しています。それはかなりシンプルですが、規約に従ってみてください。ここでは簡単な例です:
@EnableScheduling
@SpringBootApplication
public class So44550534Application {
public static void main(String[] args) {
SpringApplication.run(So44550534Application.class, args);
}
public interface TaskMBean {
void setEnabled(boolean enabled);
}
@Component
public static class Task implements TaskMBean {
private static final Logger log = LoggerFactory.getLogger(Task.class);
private boolean enabled = true;
@PostConstruct
private void init() throws Exception {
final MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
mBeanServer.registerMBean(this, new ObjectName(this.getClass().getSimpleName(), "name", "control"));
}
@Scheduled(fixedRate = 1000L)
public void run() {
if (enabled) {
log.info("Task::Running");
}
}
@Override
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
}
}
これは、あなたが仕事他の開発者の一部に話をし、彼らはこのへのアプローチを持っているかどうかを確認する良い機会です。確かにあなたの前に誰かがこのスケジューラーを実装しており、あなたのソリューションに近づける何らかの方法があります。 – Makoto
残念ながら、これの初期段階を築いた人たちはすべて消えてしまいました。しかし、これは通常の古いスプリングスケジューラです.JMXがこれを行うための道を持っているかどうかを知りたいだけです。もしそうなら、誰かが私が見ることをお勧めするリソースを持っていますか? – MickeyThreeSheds