Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
Cómo usar una sola instancia de una clase para todas las solicitudes RestController

Tengo una clase denominada PriorityJobScheduler y en RestControll quiero crear su objeto solo una vez para todas las solicitudes para las que estoy instanciando esta clase en el método @PostConstruct pero para cada nueva solicitud obtengo un nuevo objeto.

Quiero saber cómo puedo instanciar esta clase solo una vez y usar su objeto para todas las solicitudes.

 public class PriorityJobScheduler { Logger log = LoggerFactory.getLogger(PriorityJobScheduler.class); private ExecutorService priorityJobPoolExecutor; private ExecutorService priorityJobScheduler = Executors.newSingleThreadExecutor(); private PriorityBlockingQueue<DowloadProccess> priorityQueue; public PriorityJobScheduler(Integer poolSize, Integer queueSize) { Comparator<DowloadProccess> priorityComparator = Comparator.comparingInt(DowloadProccess::getJobPriority).reversed(); priorityJobPoolExecutor = Executors.newFixedThreadPool(poolSize); priorityQueue = new PriorityBlockingQueue<DowloadProccess>(queueSize, priorityComparator); priorityJobScheduler.execute(() -> { while (true) { try { log.debug(priorityQueue.take().toString()); priorityJobPoolExecutor.execute(priorityQueue.take()); } catch (InterruptedException e) { break; } } }); } public void scheduleJob(DowloadProccess job) { priorityQueue.add(job); log.debug("Jobs in queu :: " + priorityQueue.size()); }

}

mi controlador

 @RestController public class ZcrController { private static int POOL_SIZE = 1; private static int QUEUE_SIZE = 100; PriorityJobScheduler pjs; @PostConstruct public void init() { pjs = new PriorityJobScheduler(POOL_SIZE, QUEUE_SIZE); } @GetMapping("/zcr/run") public List<Map<String,Object>> exicuteCRTask(@RequestParam(required = false) String agentId,@RequestParam(required = false) String callCenterId, @RequestParam(required = false) String clientId,@RequestParam(required = false) String skillId, @RequestParam(required = false) String interval,@RequestParam("callRecordingId") String callRecordingId,@RequestParam(required = false) String type, @RequestParam(required = false) String customReport,@RequestParam(required = false) boolean ivrAcd, @RequestParam(required = false) String endDate, @RequestParam(required = false) String startDate, @RequestParam(required = false) String startTime, @RequestParam(required = false) String endTime) { ITxn txn = new TxnToken(); List<Map<String,Object>> listCDRDetail = dao.getIvrRecords(txn, params,dbParam,type); log.debug("CDR bean size::" +listCDRDetail.size()); // Here I am passing of instance of that class. // And on each new request i am getting a new instance pjs. taskExecutor.runZcrJob(pjs, dbParam, listCDRDetail, type, txn); return listCDRDetail; }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puedes crear el bean en el contenedor Spring

 @Configuration class JobSchedulerConfig { private static int POOL_SIZE = 1; private static int QUEUE_SIZE = 100; @Bean public PriorityJobScheduler createJobScheduler() { return new PriorityJobScheduler(POOL_SIZE, QUEUE_SIZE); } }

Y luego inyecte este bean en el controlador de descanso.

 @RestController public class ZcrController { private final PriorityJobScheduler priorityJobScheduler; @Autowired // kept it for readability public ZcrController(PriorityJobScheduler priorityJobScheduler) { this.priorityJobScheduler = priorityJobScheduler; } ... }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda