服务端接口处理流任务要如何返回?

痛点:正常接口返回给前端,前端根据返回码判断是否ok即可;

对于要处理流任务, 接口在什么时候返回呢?

  • 流处理后?那么接口会等待处理完成后返回,这时接口大概率是会超时;
  • 返回void类型,这时前端没有返回码,然后也会报错;

处理这种问题,我们需要知道return语句是在什么时候返回的就可以了;

简单理解return语句是在主线程返回,那么我们是不是可以在创建一个子线程去处理流任务,而主线程进行返回呢?

我们其实只需要一个线程就可以处理该问题:新建一个线程池,或者也可以创建一个单线程, 然后让该线程去执行任务,我们的接口正常返回即可;

ExecutorService executor = Executors.newFixedThreadPool(1);

executor.execute(new Runnable() { @SneakyThrows @Override public void run() { kafkaService.consumeKafka(topic, address); } }); return ResponseMessage.successMessage("监听topic:{}的kafka成功", topic);
原文地址:https://www.cnblogs.com/leavescy/p/14313291.html