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 :

Serveurs clonés et file MQ


Sujet :

Spring Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Serveurs clonés et file MQ
    Bonjour,

    j'ai une application clonée sur 2 serveurs qui accède à une file de message MQ unique.
    A la lecture des messages, l'application réalise un certain nombre de traitement (vérification, stockage en base...) avant d'acquitter le message.

    Je constate qu'il arrive que les 2 serveurs traitent le même message.
    Je cherche donc à modifier le paramétrage de mon Listener de telle sorte que les messages soient lockés dès qu'ils sont accédés.

    Voici l'extrait qui me semble pertinent de mon application-context-spring.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    		    <property name="connectionFactory" ref="jmsQueueConnectionFactory"/>
    		    <property name="destinationName" value="ISHARE001"/>
    		    <property name="messageListener" ref="jmsReceiver"/>
    		    <property name="concurrentConsumers" value="1" />
    		    <property name="maxConcurrentConsumers" value="1" />
    		    <property name="sessionTransacted" value="true" />
    		</bean>
    Quelqu'un aurait-il une idée ?
    Merci par avance...

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    Webapp1 Webapp2

    Webapp1 -> hey Webapp2 quel fichier traites tu ?
    Reply webapp2 -> et bien le fichier XXX1.renameTmp.
    Webapp1 -> prend un fichier =! de XXX1.rename.Tmp
    Webapp2 -> a Fini le traitement
    Webapp2 -> hey Webapp1 quel fichier traites tu ?
    Replay Webapp1 -> et bien le fchier XXX2.rename.tmp
    Webapp2 -> prend un fichier =! de XXX2.rename.Tmp
    Webapp1 -> a Fini le traitement

    ... etc etc ... etc ... ETc

    Tu peux aussi imaginer que les fichiers soint renomé en Tmp ... ou autres pour tes besoins.

    Si la webapp1 n'est pas occupée et bien tu détermine une webapp slave et master pour savoir qui prend la main en 1er.
    et aussi une demande d'information d'une webapp a l'autre pour savoir si l'autre webapp fonctionne toujours si oui elle reste en l'état si pas elle passe en master si elle était en slave...

    Enfin a voie haute utilise du Rmi ou un webservice ou la solution de troisieme choix un fichier xml ou properties mais c'est vraiment pour tester.

    Je sais pas si je t'aide vraiment mais voilà une piste mais il y a surement d'autre moyens plus joli.


    Bonne soirée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Ce n'est pas exactement la réponse que j'attendais... mais merci pour ta réponse.

    En fait, je ne souhaite pas gérer cette problématique applicativement (par un dialogue entre les 2 serveurs), mais j'espèrais trouver une solution au niveau de la file MQ. Je pense qu'il doit y avoir un moyen de lui dire "à partir du moment où un message a commencé à être lu par quelqu'un, il est locké jusqu'à l'acquittement (donc plus personne ne peut le lire)".

    En attendant, j'ai trouvé une solution qui n'est pas satisfaisante, mais qui réduit le risque de double-lecture.
    Dans mon application-context-spring.xml, j'ai ajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			<property name="acknowledge" value="client" />
    et dans mon listener, j'acquitte le message dès le début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void onMessage(Message message, Session session) throws JMSException {
    		try {
    			message.acknowledge();

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/01/2008, 04h35
  2. [Upload] file Upload: mettre un fichier sur le serveur
    Par eseb777 dans le forum Langage
    Réponses: 4
    Dernier message: 07/03/2007, 10h01
  3. [AJAX] input type=file avec php côté serveur
    Par redstain dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/01/2007, 15h43
  4. [hyper file client/serveur] problème de droit
    Par routmout dans le forum HyperFileSQL
    Réponses: 3
    Dernier message: 17/06/2006, 21h48
  5. Mes emails restent en file d'attente sur mon serveur
    Par FredericB dans le forum Réseau
    Réponses: 3
    Dernier message: 26/10/2005, 10h04

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