2010-09-26 2 views
1

Mon application effectue un traitement par lots en lisant les messages d'ActiveMQ. J'ai lu en utilisant l'API JMS async en implémentant MessageListener. Mais j'ACCEPTE les messages seulement quand le traitement par lots réussit en appelant message.acknowldge() [1].Un consommateur ActiveMQ doit-il être ouvert lors de l'interprétation explicite de messages?

Ce que je veux idéalement, c'est que jusqu'à ce que le traitement par lots se passe, je ne reçois aucun message du courtier JMS. Mais j'ai un doute quant à savoir si après la fermeture du consommateur, je serais en mesure d'ACK messages que j'ai lu plus tôt et qui sont en cours de traitement. En d'autres termes, l'accusé de réception explicite utilisant message.acknowledge() exige-t-il que le consommateur ActiveMQ soit ouvert?

[1] http://download.oracle.com/javaee/5/api/javax/jms/Message.html#acknowledge%28%29

Répondre

0

Le consommateur n'a pas besoin d'être ouvert, mais la session ne. (Dans les coulisses, c'est la méthode Session.sendAck qui fait le travail.)

Bruce

Questions connexes