2010-10-20 20 views
0

J'ai un bean écouteur qui appelle une méthode de beans session dans la méthode MDB onMessage. Si une exception se produit, comme IllegalStateException (que je lance) ou NPE, alors JBoss conserve la journalisation de l'exception, et réessaye de livrer le même message, spammant à nouveau les logs, puis envoie le message à DLQ, et appelle à nouveauMessage ce qui échoue encore ... la folie.Comment empêcher JBoss d'envoyer des spams si une exception se produit dans onMessage d'une MDB?

Y at-il un moyen d'arrêter cela? Y at-il une propriété de configuration pour une MDB qui indique, si des exceptions se produisent dans le onMessage (si onMessage ne retourne pas), essayez X fois, puis arrêtez d'essayer! Y a-t-il?

Répondre

0

utilisez-vous des ports d'écoute ou des spécifications d'activation? Je n'utilise pas JBoss, j'utilise WebSphere, mais j'ai trouvé que sous la zone de port d'écoute de WebSphere, vous pouvez définir le nombre de tentatives maximum. Peut-être y a-t-il aussi un endroit dans votre console d'administration où vous pouvez changer les niveaux de journalisation pour ne pas vous envoyer de spam? Enfin je chercherais une propriété dans l'en-tête de votre message appelée retryCount (ou en créer une si vous n'en avez pas). Ensuite, utilisez cela et vérifiez-le dans votre haricot. S'il le lit et que vous avez échoué N fois, alors retransmettez automatiquement au DLQ sans que JBoss le fasse pour vous. Cela pourrait vous éviter des maux de tête.

+0

Le problème est que jBoss met le message dans le DLQ, mais il continue ensuite à essayer de livrer le même message car il ne va pas à DLQ. Si j'ouvre la journalisation, alors je sais que jboss va tourner et ronger le processeur sur des exceptions et des tentatives inutiles. – rapadura