-
Faire du pooling en Java
Bonjour,
J'ai une application Java qui doit écouter l'arrivée de message sur une queue.
C'est donc une application qui doit être lancé une fois, puis tourner continuellement.
1 - Y a-t-il un moyen plus optimale que d'écrire une boucle "while(true) { ... }" dans la méthode main ?
2 - Comment faire pour arrêter l'application lorsqu'elle tourne ?
Merci d'avance pour votre aide. ;)
eraim
-
Ta "queue" est-elle d'un type particulier (MQSeries, JMS, etc.)?
Si oui, plutôt que de réinventer la roue, il vaut mieux utiliser les APIs dédiées de ces outils.
Si tu dois vraiment recoder un système d'écoute, je te suggère d'utiliser le pattern "Listener": un Thread s'occupe d'écouter la (ou les) queue(s), et propage l'information dès qu'elle change d'état (c'est-à-dire dès l'arrivée d'un message)
-
En effet, je veux écouter les messages de MQ-Series...
Quelles classes dois-je utiliser du coup ?
Aurais-tu un exemple de code, stp ? :)
-
Pour avoir déjà travaillé en java avec "Websphere MQ" (le produit d'IBM succédant à MQ-Series), voilà le conseil que je peux te donner:
Ne te lance SURTOUT PAS dans le développement d'une API de communication avec les queues MQ-Series. Tu passeras énormément de temps à développer quelque chose de moins bien (moins fiable, moins sécurisé...) que ce qui existe déjà.
En effet, si tu as des queues MQ, tu dois (ou du moins ta boite doit avoir) un support d'IBM qui te fournira les API java correspondantes.
D'ailleurs, sans même passer par le support, je pense que ces API sont disponibles en libre téléchargement sur un site d'IBM (mais n'ayant pas vérifié, c'est à prendre avec des pincettes).
Concernant le code, l'API n'est pas forcément des plus évidentes à manier, et il te faudra certainement quelques jours d'apprentissage avec les docs d'IBM pour l'utiliser convenablement.
Le projet sur lequel j'ai travaillé étant professionnel, je ne peux évidemment pas te transmettre mes sources (sauf à les retravailler pour en faire un exemple indépendant du projet, ce que je n'ai pas le temps de faire... sans compter que c'est un ancien projet et que j'ai depuis oublié les détails d'implémentation et les subtilités techniques).
-
Tu as deux possibilités :
Utiliser l'API Java d'IBM propriétaire MQ.
Utiliser l'API JMS directement, car MQ est une implémentation JMS. Ca te donne un code plus portable, car tu n'as pas de dépendance entre ton code et MQ. Donc un jour tu pourras changer de provider en changeant uniquement de la config.