Sobes.tech
Middle+

4 - aceptar rápidamente las tareas entrantes, 5 - devolver el resultado de la tarea bajo petición 6 - si no hay resultado, devolver el estado correspondiente /* Procesador - un servicio que realiza una operación larga y que consume muchos recursos. Ya está implementado Los errores que devuelve están relacionados exclusivamente con datos de entrada incorrectos, son estables y no tiene sentido volver a solicitarlos */ type Processor interface { Process([]byte) ([]byte, error) } /* Suponemos que tenemos un generador de identificadores únicos (por ejemplo, UUID). El generador garantiza que no habrá colisiones */ type ID string // func NewID() ID /* El programador acepta tareas de los clientes, las encola y las inicia en procesamiento. Asegura que no se ejecuten más de 'threads' métodos de procesamiento simultáneamente Permite verificar el estado de la tarea y obtener el resultado no bloquea sus métodos públicos para el procesamiento */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // lógica de inicialización pendiente return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // implementar return "" }