2017-06-14 10 views
0

私は基本的にはそれにいくつかのコードを持っている非常に単純なJavaクラスがある - 春スケジューラ機構を介して実行されます。JMXスイッチを介してSpring Schedulerタスクをオンまたはオフにする方法はありますか?

私はJMXに精通していないです - 残念ながら、私は、JMXスイッチを介してオンまたはオフに回しに関連するチケットを与えられています。私は、JMXをグーグルでてきたが、私が見るの質問は、私が何をしたいのかと多少異なっているので、私はそれがなんとかであれば、私はここに求めるだろうと思ったし、それがある場合、どのように私はそれを達成するためでしょうか?

+0

これは、あなたが仕事他の開発者の一部に話をし、彼らはこのへのアプローチを持っているかどうかを確認する良い機会です。確かにあなたの前に誰かがこのスケジューラーを実装しており、あなたのソリューションに近づける何らかの方法があります。 – Makoto

+0

残念ながら、これの初期段階を築いた人たちはすべて消えてしまいました。しかし、これは通常の古いスプリングスケジューラです.JMXがこれを行うための道を持っているかどうかを知りたいだけです。もしそうなら、誰かが私が見ることをお勧めするリソースを持っていますか? – MickeyThreeSheds

答えて

0

私は最も簡単な解決策を開始することをお勧めします。タスククラスにと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; 
     } 
    } 
} 

JMX Management

関連する問題