J'espère que quelqu'un peut m'aider - j'utilise JBoss 5.1 et MQ Series 7 dans une application EJB / JMS. J'ai plusieurs micros pilotés par message dans ma demande, chacun écoutant sur une file d'attente de messages série MQ. Lorsqu'une erreur est rencontrée lors du traitement d'un message, je dois être capable de configurer un «délai de réessayage», de sorte que la série MQ attend une certaine période avant de tenter de renvoyer le message. J'ai combattu à la documentation de la série MQ. Il n'a pas encore trouvé de moyen d'accomplir cela dans la série MQ. Je sais que le fournisseur JMS par défaut JBoss a un moyen de le faire, mais je suis actuellement limité à l'utilisation de la série MQ. Comme je n'ai pas pu définir un délai de nouvelle tentative - lorsque j'ai un message qui échoue, mon application est bloquée dans une boucle serrée de livrer le message et de revenir en permanence. Quelqu'un peut-il m'aider à comprendre s'il y a une option de configuration dans MQ Series qui me permettra d'attendre x millisecondes avant de réactiver un message défaillant? P>
3 Réponses :
Je pense que tu n'as pas de chance. Pour autant que je connaisse les seuls paramètres que vous pouvez modifier dans ce scénario est le nombre maximum de fois que le message sera récupéré (Bontheresh) et le nom de la file d'attente d'exception / backout (boqueu) où le message sera envoyé si le nombre de Réessayer les tentatives dépasse le max. p>
paal p>
Ceci est susceptible d'être une occasion d'engager une petite infrastructure pour un tel problème. p>
Depuis que vous pouvez regarder le JMSDeliveryCount lorsque le message est entré dans le haricot (avant de le traiter - envisagez de commettre la portée) et vous pouvez voir qu'il a déjà eu quelques retournements, envoyez le message à une file d'attente de stadification. Mais attachez le nom de la file d'attente de destination dans les propriétés JMS afin que vous puissiez l'utiliser plus tard. p>
Un processus simple peut fonctionner sur un intervalle pour effacer la queue de stadification forte> (toutes 5 minutes, par exemple) et envoyer le message à une file d'attente Un autre processus peut s'asseoir sur la queue de routage C'est un courtier d'un pauvre homme, mais il va atteindre l'objectif. Il est vrai qu'il n'y a pas beaucoup de construit pour vraiment faire ce que vous voulez. P>
Vous pouvez spécifier une limite de tentative de sorte que la restauration continue s'arrête après une tentative spécifiée. P>