Oracle
 sql >> Base de données >  >> RDS >> Oracle

Approche correcte pour initialiser un écouteur JMS asynchrone et le laisser fonctionner à l'infini

Il n'y a aucune raison d'exécuter un thread pour créer un consommateur JMS et définir son écouteur de message. L'intérêt d'un écouteur de message JMS est de recevoir un message de manière asynchrone (fonctionnalité que vous semblez essayer de dupliquer pour une raison quelconque).

Vous devez simplement créer le consommateur JMS et définir l'écouteur de message, puis vous assurer que le consommateur n'est pas fermé. Selon la façon dont l'application est écrite, il est parfois nécessaire d'avoir un while loop pour s'assurer que le programme ne se termine pas et donc fermer le consommateur. Votre fil ne fait pas cela. Cela laisse le consommateur tomber hors de portée après avoir attendu des messages pendant 5 secondes, ce qui signifie qu'il sera ramassé et je m'attends à ce que pour la plupart des implémentations JMS, cela signifie qu'il sera fermé. Cela pourrait être pire que cela, cependant. En ne fermant pas explicitement le consommateur et en le laissant simplement hors de portée, vous pourriez faire fuir les consommateurs, ce qui finirait par enliser votre courtier de messages. Ce n'est pas seulement une programmation bâclée, mais potentiellement problématique pour les autres utilisateurs essayant de consommer des messages.