Sobes.tech
Middle+

4 - aceitar rapidamente as tarefas de entrada, 5 - devolver o resultado da tarefa mediante solicitação 6 - se não houver resultado, devolver o estado correspondente /* Processador - um serviço que realiza uma operação longa e intensiva em recursos. Já está implementado Os erros que devolve estão exclusivamente relacionados com dados de entrada incorretos, são estáveis e re-solicitá-los é inútil */ type Processor interface { Process([]byte) ([]byte, error) } /* Assumimos que temos um gerador de identificadores únicos (por exemplo, UUID). O gerador garante que não haverá colisões */ type ID string // func NewID() ID /* O agendador aceita tarefas dos clientes, enfileira-as e inicia o processamento. Garante que não mais do que 'threads' métodos de processamento estão a ser executados simultaneamente Permite verificar o estado da tarefa e obter o resultado não bloqueia os métodos públicos de processamento */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // lógica de inicialização return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementar return "" }