我使用这个示例作为spring batch应用程序的起点,使用远程分块:https://github.com/benas/spring-batch-remote-chunking-sample/blob/master/src/main/java/io/github/benas/masterconfiguration.java在这个示例中,我添加了自定义的读取器/写入器,但没有更改任何配置。这个例子工作很好,除了我不能停止工作后,所有的奴隶完成。
我尝试使用JobListner,在“after job”方法中停止作业,但没有结果。
public class MyJobExecutionListener implements JobExecutionListener {
@Override
public void beforeJob(JobExecution jobExecution) {
// TODO Auto-generated method stub
}
@Override
public void afterJob(JobExecution jobExecution) {
System.out.println("afterJob start~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println(jobExecution.getExitStatus().getExitCode());
System.out.println(jobExecution.getExitStatus().getExitDescription());
System.out.println(jobExecution.getStartTime());
System.out.println(jobExecution.getEndTime());
System.out.println(jobExecution.isRunning());
System.out.println(jobExecution.isStopping());
jobExecution.stop();
System.out.println("!!!!!!!!!");
System.out.println(jobExecution.isRunning());
System.out.println(jobExecution.isStopping());
System.out.println(jobExecution.getEndTime());
System.out.println("afterJob end~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
}
@SpringBootApplication
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class AppStarter {
public static void main(String[] args) {
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!! start");
SpringApplication.run(AppStarter.class, args);
}
}
有没有办法在应用程序完成后停止?
您可以使用如下内容显式地停止主程序的应用程序上下文:
ConfigurableApplicationContext context = SpringApplication.run(YourMasterApp.class, args);
context.close();
这将确保主端已经完成作业的运行,然后关闭应用程序上下文。
不过有几个注意事项:
afterjob
方法中使用jobexecution.stop()
没有意义,因为这个afterjob
方法几乎是结束作业之前的最后一条语句。此外,这个jobexecution.stop()
将在将来的版本中删除(请参见https://jira.spring.io/browse/batch-1987)希望这能有所帮助。
问题内容: 我在另一台计算机上运行ffmpeg进行屏幕捕获。我希望能够停止它的远程录制。FFMPEG要求按q停止编码,因为它必须进行一些最终确定才能完全整理文件。我知道我可以使用kill / killall杀死它,但这可能会导致视频损坏。 我在Google上找不到专门用于此目的的任何东西,但是有人建议将回显到/ proc // fd / 0起作用。 我已经尝试过了,但是它并没有停止ffmpeg。但
我通过创建固定数量的线程来使用执行器服务来进行HTTP GET数据检索。 当Tomcat停止时,我们会出现以下错误: 严重:web应用程序[/viewer]似乎已启动名为[ThreadExecutor_51616156]的线程,但未能停止该线程。这很可能会造成内存泄漏。 这是真的吗?在没有这些服务错误的情况下,如何正确停止tomcat。
我正在尝试为Flink流媒体作业创建JUnit测试,该作业将数据写入kafka主题,并分别使用和从同一kafka主题读取数据。我正在通过生产中的测试数据: 以及检查来自消费者的数据是否与以下数据相同: 使用。 通过打印流,我能够看到来自消费者的数据。但无法获得Junit测试结果,因为即使消息完成,使用者仍将继续运行。所以它并没有来测试这个部件。 在或中是否有任何方法停止进程或运行特定时间?
我正在使用python-telegram-bot处理一个Telegram bot,我希望停止运行Telegram.job对象。 例如,我希望在hello函数处于while循环时停止运行该函数。 问题是,当我在作业开始前使用end命令时(最初10秒),它可以正常工作并停止作业,但当我在运行作业时使用end命令时,它什么也不做,因为正在运行的作业不在作业队列中。 你知道吗?如何停止正在运行的作业?
如果一项工作没有在10分钟内完成,在接下来的10分钟内另一项工作将开始。 我想要的是:下一个作业(每10分钟后)应该启动,只有在前一个作业已经完成运行的情况下。有什么办法可以做到吗?
问题内容: 我在主线程中创建一个,然后创建一个内部类线程来侦听端口。当我在主线程中关闭时,它总是遇到错误,因为在内部类线程中我调用了该方法,并且它阻塞了内部类线程。这是内部类的代码: 我想在关闭DatagramSocket之前停止内部类线程,但是不建议使用该方法。我怎样才能做到这一点? 问题答案: 关闭套接字,这将阻止阻止receive()调用。如果您首先设置了一个关闭标志,那么在catch(IO