gpt4 book ai didi

java - 有没有办法通过 JMX 开关打开或关闭 Spring Scheduler 任务?

转载 作者:行者123 更新时间:2023-12-01 08:45:34 24 4
gpt4 key购买 nike

我有一个非常简单的java类,它基本上有一些代码 - 它通过Spring调度程序机制运行。

我对 JMX 不太熟悉 - 不幸的是,我收到了一张与通过 JMX 开关打开或关闭它有关的票证。我一直在谷歌上搜索 JMX,但我看到的问题与我想做的有些不同,所以我想我会在这里问这是否可行,如果可行,我该如何实现?

最佳答案

我建议您从最简单的解决方案开始。在任务类和scheduled方法中创建一个私有(private) boolean 字段enabled,检查该字段是否设置为true然后继续,否则停止执行。

之后,您所要做的就是将任务 bean 发布到 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

关于java - 有没有办法通过 JMX 开关打开或关闭 Spring Scheduler 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44550534/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com