Que se passe-t-il dans une file d'attente JMS lorsque onMessage () renvoie une exception JMS?
Je suis à l'aide de Spring 2.5 avec ma classe personnalisée qui implémente MessageListener. Si un JmsException est jeté dans mes onMessage( ) la méthode, ce qui se passe à l'état de la file d'attente?
Est le message considéré comme "livré" par la file d'attente au moment de l'onMessage est appelé? Ou ne le JmsException déclencher une sorte de restauration et le message est entré de nouveau dans la file d'attente?
Merci d'avance!
source d'informationauteur user311121
Vous devez vous connecter pour publier un commentaire.
De la JMS 1.1 spec...
4.5.2 Livraison Asynchrone
Un client peut s'inscrire à un objet qui implémente l'JMS interface MessageListener avec un MessageConsumer. Comme l'arrivée de nouveaux messages pour le consommateur, le fournisseur remet en appelant l'attention de l'auditeur méthode onMessage.
Il est possible pour l'auditeur pour lancer une RuntimeException; toutefois, cela est considéré comme un client d'erreur de programmation. Bien comportés les auditeurs doivent attraper les exceptions et les tentatives de détourner les messages provoquant une forme d'application spécifique "unprocessable message" destination.
Le résultat d'un auditeur lancer une RuntimeException dépend de la session de l'accusé de réception de mode.
DUPS_OK_ACKNOWLEDGE - le message
sera immédiatement en rupture de stock. L'
nombre de fois qu'un fournisseur JMS va
remettre le même message d'avant
donner vers le haut est fournisseur-dépendante. L'
JMSRedelivered message de champ d'en-tête
pour faire un message de rupture de stock
en vertu de ces circonstances.
pour l'auditeur est livré. Si un
le client qui souhaite avoir la précédente
sans accusé de réception de message de rupture de stock,
il doit récupérer manuellement la session.
pour l'auditeur est livré. L'
le client peut soit valider ou annuler
la session (en d'autres mots, un
RuntimeException n'
automatiquement restauration de la session).
JMS fournisseurs de services doivent d'identifier les clients avec un message d'auditeurs qui sont à jeter
RuntimeExceptions comme peut-être défectueux.