IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

spring jms acknowledge


Sujet :

Spring Java

  1. #1
    Membre actif Avatar de austin P.
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 239
    Points
    239
    Par défaut spring jms acknowledge
    slt

    une question d'ordre général sur spring/jms

    j'ai une appli spring qui communique entre ses modules via jms.
    pour limiter le nombre de messages vers différents module, j'utilise un throttle. Celui ci me permet de contrôler exactement le nb de message sur un espace de temps donné. Disons que c'est un espèce de heartbeat . En effet le fait de jouer sur le nombre de consommateur de la queue n'est pas assez précis.

    Donc mon throttle est appelé au début de la méthode onMessage() : si un jeton de temps est disponible, la méthode s'exécute sinon je lève une exception. Mon acknowledgement est en mode CLIENT_ACKNOWLEDGE. Avec ce système j'espérai que la levé d'exception forcerait JMS a ne pas appeler la méthode message.acknowledge() et donc que le message soit retenté à nouveau, mais ce n'est pas le cas : il est essayé une seule fois quoiqu'il se passe.

    Donc questions :
    - comment forcer jms à retenter le message ?
    - sinon peut on utiliser un système pour limiter à un tempo précis (ce point est très important), l'arrivée des messages jms ?
    En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")

  2. #2
    Membre régulier Avatar de NizarK
    Inscrit en
    Mars 2007
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 189
    Points : 122
    Points
    122
    Par défaut
    J'ai fait quelques essais ....
    Le truc c'est que tu ne dois pas faire un throw sur une exception et la catcher dans ton code même si ton IDE te demande de le faire (Ex: eclipse ) ...
    De plus j'ai remarqué que le listener ne re traite le message qui a été abondonné à cause de l'exception qu'après redémarrage du listener ... ajoute donc ses quelques lignes à ton fichier de config spring pour qu'il le retraite tout de suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <bean id="listenerContainer"  class="org.springframework.jms.listener.DefaultMessageListenerContainer">    
            <property name="concurrentConsumers" value="5"/>    
            <property name="connectionFactory" ref="connectionFactory" />    
            <property name="destination" ref="destination" />
            <property name="sessionAcknowledgeModeName" value="CLIENT_ACKNOWLEDGE"/>
         <property name="transactionManager" ref="jmsTransactionManager" />
            <property name="messageListener" ref="myAsynchJmsListener" />
        </bean>

    et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager102">
    		<property name="connectionFactory">
    			<ref bean="connectionFactory"/>
    		</property>
    		<property name="pubSubDomain">
    			<value>false</value>
    		</property>
    	</bean>

  3. #3
    Membre actif Avatar de austin P.
    Inscrit en
    Juin 2004
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Juin 2004
    Messages : 182
    Points : 239
    Points
    239
    Par défaut
    cela ne fonctionne pas mieux chez moi de plus je suis en jms 1.1 et des propriétés type "pubSubDomain" n'existe pas.
    En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")

Discussions similaires

  1. Intégration Spring JMS (listener) ActiveMQ
    Par ghiwani80 dans le forum Frameworks Web
    Réponses: 0
    Dernier message: 06/07/2012, 10h32
  2. [Integration] Problème Spring JMS listener avec MQ Series
    Par ep31 dans le forum Spring
    Réponses: 0
    Dernier message: 30/05/2012, 16h54
  3. Spring JMS : gerer 2 topics
    Par fardon57 dans le forum Spring
    Réponses: 2
    Dernier message: 26/08/2009, 09h47
  4. [Integration] Spring JMS receive
    Par austin P. dans le forum Spring
    Réponses: 2
    Dernier message: 07/08/2009, 16h01
  5. Réponses: 2
    Dernier message: 02/12/2008, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo