SlideShare ist ein Scribd-Unternehmen logo
1 von 31
OpenMQ – Retour d'expérience



        J.MOLIERE – Mentor/J
         jerome@javaxpert.com
      jerome.moliere@gmail.com
Sommaire
    Contexte
●


           Métier
       –

           Technique
       –

    Solution technique mise en oeuvre
●


           Maquette réalisée
       –

           Configuration MQ
       –

           Résultats obtenus
       –

           Problèmes rencontrés
       –
Contexte
    Intervention en clientèle
●


            Start-up montpelliéraine
        –

            Middleware dans le monde bancaire,
        –
             déclenchement de transactions bancaires
             à partir de traitements métier suite à des
             opérations télécom
        –
Contexte technique (1)
    JMS acteur central
●


           Déclenche les traitements métier
       –

           Garant de la fiabilité du système
       –

                   Pas de perte de messages ==> €!!!
               ●


                           Un message n'est nullement correlé à un autre
                       –

                           Toute information perdue l ' est définitivement
                       –

                           1 message perdu implique perte de chiffre pour le
                       –
                             client
                   Doit etre à meme de supporter une évolution de
               ●

                    la charge
                           Sans remettre en cause l'architecture technique
                       –

                           Par simple mise à disposition de nouvelles
                       –
                            machines
                           Réalisme entre matériel et ressources CPU/disque
                       –
Contexte technique(2)
    Avant intervention:
●


            Utilisation du Spring Template JMS
        –

                    Trop intrusif – gestion des pools de
                ●

                     ressources par le framework plutot que
                     déléguée au moteur JMS
            Architecture JMS
        –

                    Utilisant ActiveMQ (Apache)
                ●


                            Perte de messages
                        –

                            Aucune redondance (HA)
                        –

                            Aucun lissage de charge (load balancing)
                        –

                            Fonctionnalités déjà présentes dans ActiveMQ
                        –
                             mais relevant du stade de l'incubation et pas
                             de la production!!!
Contexte technique(3)
    Après intervention:
●


            Recentrage architectural
        –

                     Briser les dépendances inutiles (Spring JMS par
                 ●

                      exemple)
                     Réalisation d'une réelle encapsulation de la
                 ●

                      couche de gestion des messages
            Robustesse de la solution
        –

                     Plus de perte de messages
                 ●



            Objectif principal atteint vis à vis du client!!!
        –

            Mais :
        –

                     Pas de réel load balancing (bug dans la 4.2
                 ●

                      OpenMQ)
Solution technique mise en
                oeuvre
    Mise en place d'un environnement de test dédié
●


           Virtualisation avec Virtualbox
       –

                   Simplicité de mise en oeuvre
               ●


                           Donc peu de temps alloué pour cette mise ne
                       –
                            oeuvre et donc peu de budget pour le client!!
                   Création d'un réseau virtuel dans mon laptop
               ●

                    dédié à cette maquette
                   Aspect performance peu impactant, priorité mise
               ●

                    sur la robustesse donc les gains de
                    performance de solutions comme (KVM ou
                    XEN) étaient peu intéressants....
Solution technique mise en
              oeuvre(2)
    Schéma architectural de la maquette
●


       –
Solution technique mise en
               oeuvre
                 (3)
    Configuration OpenMQ 4.2 en mode HA
●


           Utilisation d'un serveur de base de données
       –
            dédié dans le cas de la démonstration:
            javadb aka derby
           Mode HA:
       –

                   Pas de réel noeud maitre en théorie
               ●


                   Stockage des messages en base dans un
               ●

                    schéma dédié
                   Heartbeat entre les noeuds pour découverte à
               ●

                    chaud des noeuds vivants dans la grappe
                    (cluster).
Solution technique mise en
             oeuvre (4)
    Gestion des acquittements coté client
●


           Divers choix cf specs JMS
       –

                   NONE
               ●


                   AUTO
               ●


                   CLIENT
               ●



           Adoption d'un acquittement client
       –
            systématique
                   Permet maitrise des traitements des
               ●

                    messages
                   Messages non acquittés sont naturellement
               ●

                    délivrés de nouveau (TTL)
Solution technique mise en
             oeuvre (5)
    Acquittement des messages
●


           Utilise une API propriétaire au MQ pour éviter
       –
            un bug comportemental provenant de la
            méthode acknowledge()
           Cast du javax.jms.Message en la classe
       –
            d'implémentation de Sun pour pouvoir
            appeler la méthode
            acknowledgeThisMessage()
           Évite l'acquittement de tous les messages y
       –
            compris de celui-ci!!!
           On ne veut en acquitter qu'un seul!!!
       –
Solution technique mise en
              oeuvre(6)
    Configuration du broker en détail
●


            Principe mis en oeuvre:
        –

                    Faciliter l'ajout de noeuds dans la grappe
                ●


                    Avoir des configurations similaires d'un broker
                ●

                     à l'autre
                            Noeuds iso-fonctionnels
                        –

                    Utilisation d'un fichier commun à tous les
                ●

                     brokers et ajout des seules différences dans
                     le fichier de config de chaque broker
                            Utilisation d'un montage NFS/Samba ou
                        –
                             comme ici d'une zone d'échange VirtualBox
Solution technique mise en
              oeuvre(7)
    Configuration des brokers en détail
●


           Fichier d'un noeud de la grappe réduit au
       –
             strict minimum (ici noeud dénommé
             broker2)
           imq . b r o k e r i d=b r o k e r 2
       –

           imq . i n s t a n c e c o n f i g . v e r s i o n =300
       –

           imq . c l u s t e r . u r l= f i l e  : / / / r o o t /mq_common . p r o p e r t i e s
       –


       –
Solution technique mise en
             oeuvre (8)
    Configuration du broker en détail
●


            Fichier commun
        –

            Fichier référencé depuis les brokers mis à
        –
              disposition sur un filesystem partagé
            Beaucoup de propriétés pas toutes
        –
             commentées....
                    Ici on va segmenter en blocs pour la lisibilité
                ●
Solution technique mise en
              oeuvre(9)
    Configuration du broker en détail
●


            Définition d'un seul et meme cluster
        –

        –
Solution technique mise en
             oeuvre(10)
    Configuration du broker en détail
●


            Définition du type de persistance
        –

                    Ici utilisation d'une base de données Derby
                ●

                      sur une machine virtuelle Virtuelle (Debian
                      etch) nommée derbyserver et proposant un
                      schéma de base nommé hadb
                    imq . p e r s i s t . s t o r e=j d b c
                ●



                    imq . p e r s i s t . j d b c . dbVendor=derby
                ●



                    imq . p e r s i s t . j d b c . derby . d r i v e r=o r g . apache . derby . j d b c . C l i e n t D r i v e
                ●

                       r
                    imq . p e r s i s t . j d b c . derby . o p e n d b u r l=j d b c : derby : / / d b s e r v e r : 1 5 2 7 /
                ●

                       hadb 
                    ; c r e a t e=t r u e
                ●



                ●




        –
Résultats obtenus
    Robustesse des brokers
●


           Aucun message perdu sur des tirs d'une dizaine
       –
            d'heure (centaine de milliers de messages)
            sur de petites configurations
                   Image virtuelle simulant un proc 1Ghz avec
               ●

                     512Mo RAM dédiés
                   Performance : environ 30 messages traités /
               ●

                     seconde en pic
                   Seule alerte : cas de passages répétés du GC en
               ●

                     mode full
                           Tuning de la JVM
                       –

                           Ou augmentation des ressources dédiées à la JVM
                       –
Résultats obtenus(2)
    Robustesse:
●


           Pas eu le loisir de voir basculer les
       –
            indicateurs d'état de santé des brokers
                   3 niveaux implémentés dans OpenMQ
               ●


                           Vert
                       –

                           Orange
                       –

                           Rouge
                       –

                   Censés définir des politiques de
               ●

                    comportement des brokers
                           Pas validé!!!!
                       –
Résultats obtenus(3)
    Suite aux tests
●


            contact/mail avec l'équipe OpenMQ
        –

            Suivi d'un entretien avec Linda Schneider à
        –
             Paris
            Remarques prises en compte par l'équipe
        –
             OpenMQ et intégrées dans la roadmap du
             produit
                    Bug empechant le load balancer fixé en 4.3
                ●


                    Gros travail en 4.3 sur le schéma de base
                ●


                    Amélioration de la console d'administration en
                ●

                     4.5 (surtout pour le mode cluster)
Résultats obtenus(4)
    Avec la refonte architecturale induite par
●

    cette mission
            Création d'une réelle couche d'isolation vis à
        –
             vis du broker
            Injection de la configuration du broker au
        –
              démarrage du produit
                    Création des destinations …
                ●



            Point souvent négligé !!!!
        –

                    JMS n'a pas d'API normalisée dédiée à
                ●

                     l'administration
Problèmes rencontrés
    Techniques:
●


           Non intégration en production avec Hermes
       –
            JMS (souci dans le nommage des
            propriétés des classes)
           Schéma de base et accesseurs aux bases
       –
            introduisant des locks !!!
           Fonctionnement en mode stress avec une
       –
            petite JVM
           Load balancer
       –
Problèmes rencontrés(2)
    Documentation du produit
●


           Quelques soucis d'alignement de version
       –

           Richesse des propriétés accessibles sur ce
       –
            produit
                   14 pages de properties!!!!
               ●


                   Trouver les bonnes!!!
               ●
Conclusion
    Client satisfait
●


            Produit Open Source parfait pour les tests
        –

            Support pour passage en production possible
        –

            Robustesse est au rendez vous
        –

    OpenMQ
●


            Remontées techniques prises en compte et
        –
             accessibilité de l'équipe OpenMQ
            Produit fiable et maturité...
        –

            Roadmap avec une release tous les 3 mois!!!
        –
Conclusion(2)
    Bugs
●


           Assez peu
       –

           Pris en compte dans les versions ultérieures
       –
            ou fix packs si choix de rester en 4.2
    Performance
●


           Nouveaux tests nécessaires à faire en 4.3
       –
            car quelques soucis réglés avec cette
            version
Pointeurs
    https://mq.dev.java.net
●


    http://activemq.apache.org
●


    http://developers.sun.com/javadb/
●


    http://java.sun.com/products/jms/docs.html
●
Annexes
    Extrait de code de la méthode onMessage()
●

    d'un client....
    Initialisation du schéma de base de données
●

    et démarrage de Derby(aka javadb)
Extrait du code d'un client
●              i f ( ! ( a r g 0 instanceof MessageObject ) ) {

             logger . error (
●




    quot; Unable t o e x t r a c t MessageObject from message ! ! ! quot;
●




    );
●




         }
●




         else {
●




              MessageObject o b j = ( MessageObject ) a r g 0 ;
●




              MessageTreatment t r e a t m e n t =
●




                 this . b u s i n e s s P r o c e s s o r . createMessageTreatment ( obj ) ;
●




              treatment . treatMessage ( ) ;
●




              try {
●




                 // HACK ! ! !
●
Extrait du code d'un client
●                // j u s t send ack t o t h e e x t r a c t e d message and not a l l

           // u n p r e v i o u s l y unACKNOWLEDGED
●




           // NEED a bad c a s t t o do t h a t
●




           com . sun . m e s s a g i n g . jms . Message msg=
●




                  ( com . sun . m e ss a g i n g . jms . Message ) a r g 0 ;
●




    msg . acknowledgeThisMessage ( ) ;
●




●                      i f ( logger . isInfoEnabled ()){

                 l o g g e r . i n f o ( quot;Ok − acknowledge s e n t t o b r o k e r quot; +
●




                  quot; − message w i l l be s u p p r e s s e d ! ! quot; ) ;        }
●




           } catch ( JMSException ex ) {
●




      logger . error (
●




    quot; something went wrong w h i l e s e n d i n g ACKquot; , ex ) ;
●




             }
●




       } // onMessage ( )
●
Initialisation du schéma de la
            base de données
    Utilisation d'un outil dédié fourni par
●

    OpenMQ
            Opération réalisée depuis n'importe lequel
        –
             d'entre vos brokers (iso-fonctionnels)
            >imqdbmgr c r e a t e t b l
        –

            Va créer le schéma utilisé pour la persistance des messages et la
        –
              HA!!!
            Nécessite une base fonctionnant en réseau (cf doc Derby)
        –

                       s t a r t N e t w o r k S e r v e r −h d b s e r v e r
                   ●
Initialisation du schéma de la
          base de données(2)
    Modification du classpath des brokers pour contenir la
●

    librairie derbyclient.jar permettant de communiquer avec
    Derby!!!
         –
Questions?
    Elles sont bienvenues
●


            Mais vite on est en retard et Alexis va raler!!!
        –

●


●


●


    Merci de votre attention
●

Weitere ähnliche Inhalte

Was ist angesagt?

IT FUTURE 2011 - Microsoft Hyper V
IT FUTURE 2011 - Microsoft Hyper VIT FUTURE 2011 - Microsoft Hyper V
IT FUTURE 2011 - Microsoft Hyper VFujitsu France
 
System Center Operations Manager et la supervision des applications (.Net et ...
System Center Operations Manager et la supervision des applications (.Net et ...System Center Operations Manager et la supervision des applications (.Net et ...
System Center Operations Manager et la supervision des applications (.Net et ...Microsoft Technet France
 
Techdays 2009 - La virtualisation de machines avec Hyper-V
Techdays 2009 - La virtualisation de machines avec Hyper-VTechdays 2009 - La virtualisation de machines avec Hyper-V
Techdays 2009 - La virtualisation de machines avec Hyper-Vfabricemeillon
 
J'ai installé Team Foundation Server. Et après?
J'ai installé Team Foundation Server. Et après?J'ai installé Team Foundation Server. Et après?
J'ai installé Team Foundation Server. Et après?Microsoft Technet France
 
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...Microsoft Technet France
 
Administration reseau
Administration reseauAdministration reseau
Administration reseaunadimoc
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Microsoft Technet France
 
Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1Microsoft Technet France
 
Administration réseau snmp 2
Administration réseau snmp 2Administration réseau snmp 2
Administration réseau snmp 2Mohamed Faraji
 
supervision réseau (snmp netflow)
 supervision réseau (snmp netflow) supervision réseau (snmp netflow)
supervision réseau (snmp netflow)medalaa
 
La virtualisation dans le Datacenter
La virtualisation dans le DatacenterLa virtualisation dans le Datacenter
La virtualisation dans le DatacenterParis, France
 

Was ist angesagt? (15)

IT FUTURE 2011 - Microsoft Hyper V
IT FUTURE 2011 - Microsoft Hyper VIT FUTURE 2011 - Microsoft Hyper V
IT FUTURE 2011 - Microsoft Hyper V
 
System Center Operations Manager et la supervision des applications (.Net et ...
System Center Operations Manager et la supervision des applications (.Net et ...System Center Operations Manager et la supervision des applications (.Net et ...
System Center Operations Manager et la supervision des applications (.Net et ...
 
Rapport fiifo4 snmp
Rapport fiifo4 snmpRapport fiifo4 snmp
Rapport fiifo4 snmp
 
Techdays 2009 - La virtualisation de machines avec Hyper-V
Techdays 2009 - La virtualisation de machines avec Hyper-VTechdays 2009 - La virtualisation de machines avec Hyper-V
Techdays 2009 - La virtualisation de machines avec Hyper-V
 
J'ai installé Team Foundation Server. Et après?
J'ai installé Team Foundation Server. Et après?J'ai installé Team Foundation Server. Et après?
J'ai installé Team Foundation Server. Et après?
 
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...
Veeam Software : Sauvegarde et protection des données, plan de reprise d’acti...
 
Présentation de jBPM 3.1
Présentation de jBPM 3.1Présentation de jBPM 3.1
Présentation de jBPM 3.1
 
Administration reseau
Administration reseauAdministration reseau
Administration reseau
 
Snmp
SnmpSnmp
Snmp
 
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
Tout sur les solutions de Haute Disponibilité et Disaster Recovery de SQL Ser...
 
Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1Vue d'ensemble des nouveautés de System Center 2012 SP1
Vue d'ensemble des nouveautés de System Center 2012 SP1
 
Administration réseau snmp 2
Administration réseau snmp 2Administration réseau snmp 2
Administration réseau snmp 2
 
supervision réseau (snmp netflow)
 supervision réseau (snmp netflow) supervision réseau (snmp netflow)
supervision réseau (snmp netflow)
 
La virtualisation dans le Datacenter
La virtualisation dans le DatacenterLa virtualisation dans le Datacenter
La virtualisation dans le Datacenter
 
VMWare Tour 2012
VMWare Tour 2012VMWare Tour 2012
VMWare Tour 2012
 

Andere mochten auch

Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Robert Nicholson
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middlewareSajan Sahu
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integrationprajods
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182Robert Nicholson
 
Message Oriented Middleware (MOM)
Message Oriented Middleware (MOM)Message Oriented Middleware (MOM)
Message Oriented Middleware (MOM)drewenut
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middlewareLikan Patra
 
Middleware and Middleware in distributed application
Middleware and Middleware in distributed applicationMiddleware and Middleware in distributed application
Middleware and Middleware in distributed applicationRishikese MR
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented MiddlewarePeter R. Egli
 

Andere mochten auch (10)

Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181Introducing MQ Light - IBM Interconnect 2015 session AME4181
Introducing MQ Light - IBM Interconnect 2015 session AME4181
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middleware
 
Apache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source IntegrationApache Camel: The Swiss Army Knife of Open Source Integration
Apache Camel: The Swiss Army Knife of Open Source Integration
 
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182MQ Light in IBM MQ:  IBM Interconnect 2015 session AME4182
MQ Light in IBM MQ: IBM Interconnect 2015 session AME4182
 
Message Oriented Middleware (MOM)
Message Oriented Middleware (MOM)Message Oriented Middleware (MOM)
Message Oriented Middleware (MOM)
 
Architecture of message oriented middleware
Architecture of message oriented middlewareArchitecture of message oriented middleware
Architecture of message oriented middleware
 
IBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQIBM MQ vs Apache ActiveMQ
IBM MQ vs Apache ActiveMQ
 
Middleware and Middleware in distributed application
Middleware and Middleware in distributed applicationMiddleware and Middleware in distributed application
Middleware and Middleware in distributed application
 
MOM - Message Oriented Middleware
MOM - Message Oriented MiddlewareMOM - Message Oriented Middleware
MOM - Message Oriented Middleware
 
Projet MQTT
Projet MQTTProjet MQTT
Projet MQTT
 

Ähnlich wie Open MQ Jerome Moliere

Ingénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWIngénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWRealTime-at-Work (RTaW)
 
V12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterV12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterParis, France
 
Presentation mug-data mapper
Presentation mug-data mapperPresentation mug-data mapper
Presentation mug-data mapperFastConnect
 
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision QualiteSolutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualitefrancois.le.droff
 
Viseo intro Prive Public Cloud vs hosting
Viseo intro Prive Public Cloud vs hostingViseo intro Prive Public Cloud vs hosting
Viseo intro Prive Public Cloud vs hostingthavo001
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
présentation migration automatisee Pacbase -> UML + Java
présentation migration automatisee Pacbase -> UML + Javaprésentation migration automatisee Pacbase -> UML + Java
présentation migration automatisee Pacbase -> UML + JavaDidier Durand
 
Virtualisation par logiciels libres
Virtualisation par logiciels libresVirtualisation par logiciels libres
Virtualisation par logiciels libresguest3be047
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesGeeks Anonymes
 
Cours sys 2PPT20.pdf
Cours sys 2PPT20.pdfCours sys 2PPT20.pdf
Cours sys 2PPT20.pdfC00LiMoUn
 
Solutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaSolutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaLaurent Guérin
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdfJunior724645
 
VMTurbo Presentation in FRENCH
VMTurbo Presentation in FRENCHVMTurbo Presentation in FRENCH
VMTurbo Presentation in FRENCHMichael Nagar
 
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...Microsoft Ideas
 

Ähnlich wie Open MQ Jerome Moliere (20)

Ingénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWIngénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaW
 
V12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenterV12N avec Xen et IBM BladeCenter
V12N avec Xen et IBM BladeCenter
 
Presentation mug-data mapper
Presentation mug-data mapperPresentation mug-data mapper
Presentation mug-data mapper
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Hudson Aquarium Paris
Hudson Aquarium ParisHudson Aquarium Paris
Hudson Aquarium Paris
 
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision QualiteSolutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
 
Wygday 2008
Wygday 2008Wygday 2008
Wygday 2008
 
Powershell et les techniques de remoting
Powershell et les techniques de remoting Powershell et les techniques de remoting
Powershell et les techniques de remoting
 
Viseo intro Prive Public Cloud vs hosting
Viseo intro Prive Public Cloud vs hostingViseo intro Prive Public Cloud vs hosting
Viseo intro Prive Public Cloud vs hosting
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
141[1]
141[1]141[1]
141[1]
 
présentation migration automatisee Pacbase -> UML + Java
présentation migration automatisee Pacbase -> UML + Javaprésentation migration automatisee Pacbase -> UML + Java
présentation migration automatisee Pacbase -> UML + Java
 
Retour d'expérience sur PowerShell
Retour d'expérience sur PowerShellRetour d'expérience sur PowerShell
Retour d'expérience sur PowerShell
 
Virtualisation par logiciels libres
Virtualisation par logiciels libresVirtualisation par logiciels libres
Virtualisation par logiciels libres
 
Implémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexesImplémentation efficace et durable de processus métiers complexes
Implémentation efficace et durable de processus métiers complexes
 
Cours sys 2PPT20.pdf
Cours sys 2PPT20.pdfCours sys 2PPT20.pdf
Cours sys 2PPT20.pdf
 
Solutions Linux Développement Rapide Java
Solutions Linux Développement Rapide JavaSolutions Linux Développement Rapide Java
Solutions Linux Développement Rapide Java
 
01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf01_Introduction_a_JEE.pdf
01_Introduction_a_JEE.pdf
 
VMTurbo Presentation in FRENCH
VMTurbo Presentation in FRENCHVMTurbo Presentation in FRENCH
VMTurbo Presentation in FRENCH
 
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...
Transformer votre Cloud : est-ce si simple ? La réponse avec les solutions EM...
 

Mehr von Alexis Moussine-Pouchkine

GlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsGlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsAlexis Moussine-Pouchkine
 

Mehr von Alexis Moussine-Pouchkine (20)

GlassFish Article September 07
GlassFish Article September 07GlassFish Article September 07
GlassFish Article September 07
 
GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010GlassFish OSGi - Java2days 2010
GlassFish OSGi - Java2days 2010
 
GlassFish Community and future larochelle
GlassFish Community and future larochelleGlassFish Community and future larochelle
GlassFish Community and future larochelle
 
Javaee glassfish jcertif2010
Javaee glassfish jcertif2010Javaee glassfish jcertif2010
Javaee glassfish jcertif2010
 
GlassFish Community - FISL 2010
GlassFish Community - FISL 2010GlassFish Community - FISL 2010
GlassFish Community - FISL 2010
 
GlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applicationsGlassFish OSGi - From modular runtime to hybrid applications
GlassFish OSGi - From modular runtime to hybrid applications
 
Feuille de route (roadmap) GlassFish
Feuille de route (roadmap) GlassFishFeuille de route (roadmap) GlassFish
Feuille de route (roadmap) GlassFish
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09GlassFish v3 at JavaZone 09
GlassFish v3 at JavaZone 09
 
L'association GUSES
L'association GUSESL'association GUSES
L'association GUSES
 
Open Solaris 2009.06
Open Solaris 2009.06Open Solaris 2009.06
Open Solaris 2009.06
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 
Metro Web Services
Metro Web ServicesMetro Web Services
Metro Web Services
 
Retour JavaOne 2009
Retour JavaOne 2009Retour JavaOne 2009
Retour JavaOne 2009
 
Zembly
ZemblyZembly
Zembly
 
Behind The Clouds
Behind The CloudsBehind The Clouds
Behind The Clouds
 
Retour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFishRetour d'expérience Cap Gemini GlassFish
Retour d'expérience Cap Gemini GlassFish
 
OpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP serverOpenDS - Open Source Java LDAP server
OpenDS - Open Source Java LDAP server
 
GlassFish v2.1
GlassFish v2.1GlassFish v2.1
GlassFish v2.1
 
GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6
 

Open MQ Jerome Moliere

  • 1. OpenMQ – Retour d'expérience J.MOLIERE – Mentor/J jerome@javaxpert.com jerome.moliere@gmail.com
  • 2. Sommaire Contexte ● Métier – Technique – Solution technique mise en oeuvre ● Maquette réalisée – Configuration MQ – Résultats obtenus – Problèmes rencontrés –
  • 3. Contexte Intervention en clientèle ● Start-up montpelliéraine – Middleware dans le monde bancaire, – déclenchement de transactions bancaires à partir de traitements métier suite à des opérations télécom –
  • 4. Contexte technique (1) JMS acteur central ● Déclenche les traitements métier – Garant de la fiabilité du système – Pas de perte de messages ==> €!!! ● Un message n'est nullement correlé à un autre – Toute information perdue l ' est définitivement – 1 message perdu implique perte de chiffre pour le – client Doit etre à meme de supporter une évolution de ● la charge Sans remettre en cause l'architecture technique – Par simple mise à disposition de nouvelles – machines Réalisme entre matériel et ressources CPU/disque –
  • 5. Contexte technique(2) Avant intervention: ● Utilisation du Spring Template JMS – Trop intrusif – gestion des pools de ● ressources par le framework plutot que déléguée au moteur JMS Architecture JMS – Utilisant ActiveMQ (Apache) ● Perte de messages – Aucune redondance (HA) – Aucun lissage de charge (load balancing) – Fonctionnalités déjà présentes dans ActiveMQ – mais relevant du stade de l'incubation et pas de la production!!!
  • 6. Contexte technique(3) Après intervention: ● Recentrage architectural – Briser les dépendances inutiles (Spring JMS par ● exemple) Réalisation d'une réelle encapsulation de la ● couche de gestion des messages Robustesse de la solution – Plus de perte de messages ● Objectif principal atteint vis à vis du client!!! – Mais : – Pas de réel load balancing (bug dans la 4.2 ● OpenMQ)
  • 7. Solution technique mise en oeuvre Mise en place d'un environnement de test dédié ● Virtualisation avec Virtualbox – Simplicité de mise en oeuvre ● Donc peu de temps alloué pour cette mise ne – oeuvre et donc peu de budget pour le client!! Création d'un réseau virtuel dans mon laptop ● dédié à cette maquette Aspect performance peu impactant, priorité mise ● sur la robustesse donc les gains de performance de solutions comme (KVM ou XEN) étaient peu intéressants....
  • 8. Solution technique mise en oeuvre(2) Schéma architectural de la maquette ● –
  • 9. Solution technique mise en oeuvre (3) Configuration OpenMQ 4.2 en mode HA ● Utilisation d'un serveur de base de données – dédié dans le cas de la démonstration: javadb aka derby Mode HA: – Pas de réel noeud maitre en théorie ● Stockage des messages en base dans un ● schéma dédié Heartbeat entre les noeuds pour découverte à ● chaud des noeuds vivants dans la grappe (cluster).
  • 10. Solution technique mise en oeuvre (4) Gestion des acquittements coté client ● Divers choix cf specs JMS – NONE ● AUTO ● CLIENT ● Adoption d'un acquittement client – systématique Permet maitrise des traitements des ● messages Messages non acquittés sont naturellement ● délivrés de nouveau (TTL)
  • 11. Solution technique mise en oeuvre (5) Acquittement des messages ● Utilise une API propriétaire au MQ pour éviter – un bug comportemental provenant de la méthode acknowledge() Cast du javax.jms.Message en la classe – d'implémentation de Sun pour pouvoir appeler la méthode acknowledgeThisMessage() Évite l'acquittement de tous les messages y – compris de celui-ci!!! On ne veut en acquitter qu'un seul!!! –
  • 12. Solution technique mise en oeuvre(6) Configuration du broker en détail ● Principe mis en oeuvre: – Faciliter l'ajout de noeuds dans la grappe ● Avoir des configurations similaires d'un broker ● à l'autre Noeuds iso-fonctionnels – Utilisation d'un fichier commun à tous les ● brokers et ajout des seules différences dans le fichier de config de chaque broker Utilisation d'un montage NFS/Samba ou – comme ici d'une zone d'échange VirtualBox
  • 13. Solution technique mise en oeuvre(7) Configuration des brokers en détail ● Fichier d'un noeud de la grappe réduit au – strict minimum (ici noeud dénommé broker2) imq . b r o k e r i d=b r o k e r 2 – imq . i n s t a n c e c o n f i g . v e r s i o n =300 – imq . c l u s t e r . u r l= f i l e : / / / r o o t /mq_common . p r o p e r t i e s – –
  • 14. Solution technique mise en oeuvre (8) Configuration du broker en détail ● Fichier commun – Fichier référencé depuis les brokers mis à – disposition sur un filesystem partagé Beaucoup de propriétés pas toutes – commentées.... Ici on va segmenter en blocs pour la lisibilité ●
  • 15. Solution technique mise en oeuvre(9) Configuration du broker en détail ● Définition d'un seul et meme cluster – –
  • 16. Solution technique mise en oeuvre(10) Configuration du broker en détail ● Définition du type de persistance – Ici utilisation d'une base de données Derby ● sur une machine virtuelle Virtuelle (Debian etch) nommée derbyserver et proposant un schéma de base nommé hadb imq . p e r s i s t . s t o r e=j d b c ● imq . p e r s i s t . j d b c . dbVendor=derby ● imq . p e r s i s t . j d b c . derby . d r i v e r=o r g . apache . derby . j d b c . C l i e n t D r i v e ● r imq . p e r s i s t . j d b c . derby . o p e n d b u r l=j d b c : derby : / / d b s e r v e r : 1 5 2 7 / ● hadb ; c r e a t e=t r u e ● ● –
  • 17. Résultats obtenus Robustesse des brokers ● Aucun message perdu sur des tirs d'une dizaine – d'heure (centaine de milliers de messages) sur de petites configurations Image virtuelle simulant un proc 1Ghz avec ● 512Mo RAM dédiés Performance : environ 30 messages traités / ● seconde en pic Seule alerte : cas de passages répétés du GC en ● mode full Tuning de la JVM – Ou augmentation des ressources dédiées à la JVM –
  • 18. Résultats obtenus(2) Robustesse: ● Pas eu le loisir de voir basculer les – indicateurs d'état de santé des brokers 3 niveaux implémentés dans OpenMQ ● Vert – Orange – Rouge – Censés définir des politiques de ● comportement des brokers Pas validé!!!! –
  • 19. Résultats obtenus(3) Suite aux tests ● contact/mail avec l'équipe OpenMQ – Suivi d'un entretien avec Linda Schneider à – Paris Remarques prises en compte par l'équipe – OpenMQ et intégrées dans la roadmap du produit Bug empechant le load balancer fixé en 4.3 ● Gros travail en 4.3 sur le schéma de base ● Amélioration de la console d'administration en ● 4.5 (surtout pour le mode cluster)
  • 20. Résultats obtenus(4) Avec la refonte architecturale induite par ● cette mission Création d'une réelle couche d'isolation vis à – vis du broker Injection de la configuration du broker au – démarrage du produit Création des destinations … ● Point souvent négligé !!!! – JMS n'a pas d'API normalisée dédiée à ● l'administration
  • 21. Problèmes rencontrés Techniques: ● Non intégration en production avec Hermes – JMS (souci dans le nommage des propriétés des classes) Schéma de base et accesseurs aux bases – introduisant des locks !!! Fonctionnement en mode stress avec une – petite JVM Load balancer –
  • 22. Problèmes rencontrés(2) Documentation du produit ● Quelques soucis d'alignement de version – Richesse des propriétés accessibles sur ce – produit 14 pages de properties!!!! ● Trouver les bonnes!!! ●
  • 23. Conclusion Client satisfait ● Produit Open Source parfait pour les tests – Support pour passage en production possible – Robustesse est au rendez vous – OpenMQ ● Remontées techniques prises en compte et – accessibilité de l'équipe OpenMQ Produit fiable et maturité... – Roadmap avec une release tous les 3 mois!!! –
  • 24. Conclusion(2) Bugs ● Assez peu – Pris en compte dans les versions ultérieures – ou fix packs si choix de rester en 4.2 Performance ● Nouveaux tests nécessaires à faire en 4.3 – car quelques soucis réglés avec cette version
  • 25. Pointeurs https://mq.dev.java.net ● http://activemq.apache.org ● http://developers.sun.com/javadb/ ● http://java.sun.com/products/jms/docs.html ●
  • 26. Annexes Extrait de code de la méthode onMessage() ● d'un client.... Initialisation du schéma de base de données ● et démarrage de Derby(aka javadb)
  • 27. Extrait du code d'un client ● i f ( ! ( a r g 0 instanceof MessageObject ) ) { logger . error ( ● quot; Unable t o e x t r a c t MessageObject from message ! ! ! quot; ● ); ● } ● else { ● MessageObject o b j = ( MessageObject ) a r g 0 ; ● MessageTreatment t r e a t m e n t = ● this . b u s i n e s s P r o c e s s o r . createMessageTreatment ( obj ) ; ● treatment . treatMessage ( ) ; ● try { ● // HACK ! ! ! ●
  • 28. Extrait du code d'un client ● // j u s t send ack t o t h e e x t r a c t e d message and not a l l // u n p r e v i o u s l y unACKNOWLEDGED ● // NEED a bad c a s t t o do t h a t ● com . sun . m e s s a g i n g . jms . Message msg= ● ( com . sun . m e ss a g i n g . jms . Message ) a r g 0 ; ● msg . acknowledgeThisMessage ( ) ; ● ● i f ( logger . isInfoEnabled ()){ l o g g e r . i n f o ( quot;Ok − acknowledge s e n t t o b r o k e r quot; + ● quot; − message w i l l be s u p p r e s s e d ! ! quot; ) ; } ● } catch ( JMSException ex ) { ● logger . error ( ● quot; something went wrong w h i l e s e n d i n g ACKquot; , ex ) ; ● } ● } // onMessage ( ) ●
  • 29. Initialisation du schéma de la base de données Utilisation d'un outil dédié fourni par ● OpenMQ Opération réalisée depuis n'importe lequel – d'entre vos brokers (iso-fonctionnels) >imqdbmgr c r e a t e t b l – Va créer le schéma utilisé pour la persistance des messages et la – HA!!! Nécessite une base fonctionnant en réseau (cf doc Derby) – s t a r t N e t w o r k S e r v e r −h d b s e r v e r ●
  • 30. Initialisation du schéma de la base de données(2) Modification du classpath des brokers pour contenir la ● librairie derbyclient.jar permettant de communiquer avec Derby!!! –
  • 31. Questions? Elles sont bienvenues ● Mais vite on est en retard et Alexis va raler!!! – ● ● ● Merci de votre attention ●