Sobes.tech
Middle+

4 - accepter rapidement les tâches entrantes, 5 - renvoyer le résultat de la tâche sur demande 6 - s'il n'y a pas de résultat, renvoyer le statut approprié /* Processeur - un service qui effectue une opération longue et gourmande en ressources. Il est déjà implémenté Les erreurs qu'il renvoie sont exclusivement liées à des données d'entrée incorrectes, sont stables et les re-demander est inutile */ type Processor interface { Process([]byte) ([]byte, error) } /* Nous supposons que nous avons un générateur d'identifiants uniques (par exemple, UUID). Le générateur garantit qu'il n'y aura pas de collisions */ type ID string // func NewID() ID /* Le planificateur accepte des tâches des clients, les met en file d'attente et les lance en traitement. Assure qu'au plus 'threads' méthodes de traitement sont en cours d'exécution simultanément Permet de vérifier le statut de la tâche et d'obtenir le résultat ne bloque pas ses méthodes publiques pour le traitement */ type Scheduler struct { processor Processor } func NewScheduler( prc Processor, threads int, ) *Scheduler { // logique d'initialisation à faire return &Scheduler{ processor: prc, } } func (s *Scheduler) Queue(request []byte) ID { // à implémenter return "" }