在 Spring 引导中安排功能

Scheduling a function in Spring boot

我正在尝试将以下函数安排为每 10 秒 运行。但它告诉它需要一个 void 函数。有什么办法可以安排以下功能吗?

@Scheduled(fixedRate = 10000)
public FtpOutboundGateway getFiles() {
    FtpOutboundGateway gateway = new FtpOutboundGateway(sf(), "mget", "payload");
    gateway.setAutoCreateDirectory(true);
    gateway.setLocalDirectory(new File("./downloads/"));
    gateway.setFileExistsMode(FileExistsMode.REPLACE_IF_MODIFIED);
    gateway.setFilter(new AcceptOnceFileListFilter<>());
    gateway.setOutputChannelName("fileResults");
    return gateway;
}

为此,我们需要做以下事情。

  1. 先把这个注解@EnableScheduling放在class层级。
  2. 那么在需要预约的功能上,要标注@Scheduled。
  3. 我们正在尝试安排的函数不应该 return 任何东西。
@EnableScheduling
class <ClassName>{
//def

 @Scheduled(fixedDelayString = "10000")
 public void fxnName() {
   //def
}

}

由于 @Scheduled 方法由线程池中的线程在给定的时间间隔或时间内在内部调用,注释预计它是无效的,因为它对 return 值没有意义。如果您想追踪响应,请将其提取到另一个方法并从 @Scheduled 方法以及其他服务调用它。