J'ai essayé de google ceci, mais n'ai pas réussi. Si j'utilise AUTO_ACKNOWLEDGE
, et j'ai un client consommateur écrit en Java, quand le message est-il reconnu? J'utilise un MessageListener
qui contient une méthode onMessage
. L'accusé de réception est-il renvoyé au serveur avant onMessage
ou après la fin de onMessage
ou à un autre moment? Merci d'avance pour toute aide que quiconque est en mesure de fournir!
Veuillez vérifier cela n .
Avec le mode AUTO_ACKNOWLEDGE
, L'accusé de réception est toujours la dernière chose à se produire implicitement après le retour du gestionnaire onMessage()
. Le client qui reçoit les messages peut obtenir un contrôle plus fin sur la livraison des messages garantis en spécifiant le mode CLIENT_ACKNOWLEDGE
Sur la session consommatrice.
L'utilisation de CLIENT_ACKNOWLEDGE
Permet à l'application de contrôler le moment où l'accusé de réception est envoyé. Par exemple, une application peut accuser réception d'un message - déchargeant ainsi le fournisseur JMS de son devoir - et effectuer un traitement supplémentaire des données représentées par le message. La clé de ceci est la méthode d'accusé de réception () sur l'objet Message, comme indiqué dans le listing 1.
La méthode acknowledge()
informe le fournisseur JMS que le message a bien été reçu par le consommateur. Cette méthode lève une exception pour le client si une défaillance du fournisseur se produit pendant le processus d'accusé de réception. L'échec du fournisseur entraîne la conservation du message par le serveur JMS pour la redistribution.
CLIENT_ACKNOWLEDGE
Avec ce mode d'accusé de réception, le client accuse réception d'un message consommé en appelant la méthode d'accusé de réception du message.
Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
...
msg = (TextMessage) consumer.receive();
//acknowledge
msg.acknowledge();
AUTO_ACKNOWLEDGE
.
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);