SESSION ne peut pas être utilisé lorsque la file d'attente est exécutée de manière asynchrone, puis-je toujours utiliser la file d'attente lors de la connexion ? Si oui, comment puis-je gérer la relation correspondante entre les cookies et les sessions ?
La connexion est généralement un processus synchrone. L'utilisation d'une file d'attente n'est pas impossible, mais cela augmentera la complexité.
Le processus de connexion synchrone consiste à lire la base de données, à déterminer le compte et le mot de passe corrects et à configurer la session, qui peut être complétée en une seule requête HTTP.
En passant à l'asynchrone, je ne pense qu'à la méthode suivante :
Le client génère un jeton aléatoire
Le client envoie le jeton, le numéro de compte et le mot de passe au serveur
Le serveur enregistre ce jeton dans Redis et ne s'est pas connecté avec succès
Le serveur met le jeton, le compte et le mot de passe dans la file d'attente pour traitement
Traitement de la file d'attente, si le compte est correct, le jeton dans Redis est marqué comme réussi, sinon il est marqué comme échec
Pendant le processus de traitement du serveur et de la file d'attente, le client continue d'utiliser une autre interface pour interroger si la connexion au jeton réussit. En cas de succès, toutes les demandes suivantes apporteront le jeton, sinon la connexion du client échoue.
Le processus de connexion synchrone doit donc être terminé dès que possible, et certaines opérations requises après la connexion (envoi de notifications par e-mail, etc.) doivent être mises en file d'attente au lieu de l'ensemble du processus de connexion.