Vous pouvez configurer le pool d'écoute de file d'attente d'avoir un seul fil, donc pas plus d'un auditeur demandes de traitement, mais cela n'a pas de sens pour moi.
La bonne réponse est de régler la taille du pool de threads pour équilibrer les performances avec les besoins en mémoire.
Plusieurs milliers? Par seconde, par minute, par heure? Le rythme auquel ils arrivent et le temps que prend chaque tâche sont tous les deux cruciaux. Combien de temps, de mémoire, CPU par demande? Assurez-vous de configurer votre file d'attente pour gérer ce qui pourrait être un backlog assez important. MISE À JOUR: Si dix messages arrivent par seconde et qu'il faut 10 secondes à un seul auditeur pour traiter un message, vous aurez besoin de 101 threads d'écoute pour pouvoir continuer. (10 messages/seconde * 10 secondes signifie que 100 messages arrivent au moment où le premier auditeur termine sa tâche de 10 secondes, le 101ème écouteur gérera le 101ème message, et les auditeurs suivants finiront à temps pour suivre.) Si vous avez besoin de 1 Mo de RAM par auditeur, vous aurez besoin de 101 Mo de RAM pour traiter tous les messages sur un seul serveur. Vous aurez également besoin d'une estimation similaire pour le processeur.
Il peut être judicieux de penser à plusieurs files d'attente sur plusieurs serveurs et d'équilibrer la charge entre eux si un serveur n'est pas suffisant.
Merci - Pour vous donner une idée approximative, nous parlons de dizaines de demandes par seconde, avec un temps de traitement de 10 à 30 secondes par message. Bien que j'aimerais optimiser la vitesse de traitement autant que possible, je m'inquiète surtout de l'épuisement des ressources du serveur si une nouvelle instance est créée pour chaque requête, comme cela se passait avec mon implémentation existante qui utilise des appels de beans de session sans état. . – jumponadoughnut