SlideShare une entreprise Scribd logo
AMQP
   Interopérabilité et découplage de systèmes hétérogènes
                        avec RabbitMQ

Pierre Queinnec                             @ZenikaIT
Bernard Jourdain
SI actuels
-       Grande hétérogénéité
    -     ERP, CRM, DB, LDAP, etc, etc
    -     différentes plateformes
    -     différents langages
-       Couplages souvent forts
    -     appels bloquants
    -     formats spécifiques
Découplage
-       Solution classique au couplage : MOM
    -     Message-Oriented Middleware
    -     Asynchronisme
    -     “Donnée en mouvement”
-       Grands Acteurs
    -     IBM, TIBCO, Microsoft
Implémentations

-       Microsoft MSMQ
-       En Java/JEE, API standardisée JMS
    -     uniquement une API
    -     ne définit pas le format du message
Topologies

-   P2P (peer-to-peer)
-   ESB (Entreprise Service Bus)
-   Pipeline
-   etc...
Scalabilité

-       Difficultés des topologies “Cloud”
    -     Machines provisionnées dynamiquement
-       Nécessité d’une interopérabilité entre
        middlewares
AMQP

-   Advanced Message Queuing Protocol
-   But de réduire le “vendor lock-in”
AMQP... un format

-       AMQP est un format de message
    -     “wire-level”
-       Pas de langage/plateforme donnés, pas d’API
-       À la TCP
    -     interopérable
Protocoles

-       Pérennité protocolaire
    -     IP, UDP, TCP
    -     HTTP, SMTP
Positionnement

async     SMTP          ?



sync      HTTP        IIOP



        unreliable   reliable
Propriétés

-   Fidelity - durabilité
-   Security - authentification, transport
-   Transactions - fiabilité
-   Smart routing - intermédiation
-   Management
AMQP... un standard
-       Normalisé par l’OASIS
-       Version 1.0 en draft quasi-final
-       Technical Committee (TC) AMQP
    -     Finance
    -     Editeurs
    -     Peu de Services
Composition TC

-   JPMorgan, Goldman Sachs, Crédit Suisse,
    Deutsche Börse, Bank of America...
-   Microsoft,VMware, RedHat, Cisco,
    Kaazing...
-   HCL, Zenika
AMQP... un standard

 -   Au-delà du format de message...
 -   “Broker Semantics”
 -   Normalisation de l’interconnexion de
     brokers hétérogènes
RabbitMQ
-       Implémentation de
    -     AMQP 0-8-0
    -     AMQP 0-9
    -     AMQP 0-9-1
-       AMQP 1.0
-       Open-Source (MPL)
RabbitMQ

-       Ecrit en Erlang
-       Bibliothèques pour tous les langages -
        plateformes
    -     .Net - Java
    -     Erlang, JavaScript, PHP, Ruby, Python...
Routage AMQP
                                              Client
                                        sub

         pub
Client             E       m m
         pub                            sub   Client
         m                 m
         pub       E
Client                                  sub
                                              Client
                           m m m


               Exchanges       Queues
Workflow & Concepts
  -   Un Producteur poste un couple {Clef de
      Routage, Message} vers un Exchange
  -   Un Broker route un message vers une Queue
      en se basant sur sa Clef de Routage
  -   Un Consommateur récupère un Message
      depuis une Queue
  -   Un Message dans une Queue ne peut être
      récupéré que par un Consommateur
Exchanges

-       Routage sur :
    -     la clef de routage
    -     les headers
    -     les propriétés
    -     le contenu
Intro aux Exchanges

-       Quatre types d’Exchanges par défaut
    -     Direct
    -     Fanout
    -     Topic
    -     Headers
Fanout


-   Aucun test sur la clef de routage
-   Le message est routé sur toutes les Queues
    bindées à l’Exchange
Direct
-   Clef de routage obligatoire
-   Chaque Queue bindée à l’Exchange fournit
    une valeur de clef de routage
-   Pour chaque Queue, test d’égalité entre la clef
    de routage du message et la valeur fournie
-   Si égalité, copie du message dans la Queue
-   Exemple : clef = ‘nasdaq’
Headers

-       Comme pour le type Direct, mais test
        d’égalité sur une valeur d’entêtes (“header”)
        plutôt que sur la clef de routage
-       Exemple (clef = valeur)
    -     lang = javascript
Topic
-       Comme pour le type Direct mais
        comparaison avec possibilité d’utiliser des
        wildcards
    -     ‘*’ pour exactement un mot
    -     ‘#’ pour zéro ou plus de mots
-       Exemples
    -     comp.lang.#
    -     *.erlang
Queues
-       L’Exchange route les messages vers les
        Queues concernées
    -     Si multiple Queues, le message est traité
          comme dupliqué
    -     La Queue stocke le message jusqu’à ce
          qu’il soit récupéré par un consommateur
    -     Mécanisme de sécurité sur la
          récupération des messages (ack)
Cas Démo

-       Elections Présidentielles 2007
    -     Second tour
    -     Visualisation des résultats du vote
Côté .Net


-   MVVM Light (disponible avec Nuget)
-   RabbitMQ (disponible avec Nuget)
Côté .Net
-       Application TechDays.Backend
    -        Lit le fichier Index.xml qui donne l’état d’un
             département
         -     Etat ‘CLOS’ : le résultat est là
         -     Etat ‘NON CLOS’ : pas de résultat pour
               l’instant
    -        Lorsque CLOS
         -     lit le résultat
         -     envoie un message à RabbitMQ
Exemple ‘NON CLOS’
<Dpt>
	
  	
  <CodReg>82</CodReg>
	
  	
  <CodReg3Car>082</CodReg3Car>
	
  	
  <CodDpt>01</CodDpt>
	
  	
  <CodDpt3Car>001</CodDpt3Car>
	
  	
  <CodMinDpt>01</CodMinDpt>
	
  	
  <LibDpt>AIN</LibDpt>
	
  	
  <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>
	
  	
  <HeureClotureDpt>14:59:04</HeureClotureDpt>
	
  	
  <Clos>NON	
  CLOS</Clos>
</Dpt>
Exemple de résultat
<Dpt>
	
  	
  <CodReg>82</CodReg>
	
  	
  <CodReg3Car>082</CodReg3Car>
	
  	
  <CodDpt>01</CodDpt>
	
  	
  <CodDpt3Car>001</CodDpt3Car>
	
  	
  <CodMinDpt>01</CodMinDpt>
	
  	
  <LibDpt>AIN</LibDpt>
	
  	
  <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>
	
  	
  <HeureClotureDpt>14:59:04</HeureClotureDpt>
	
  	
  <Clos>CLOS</Clos>
	
  	
  <Candidat>
	
  	
  	
  	
  <Nom>SARKOZY</Nom>
	
  	
  	
  	
  <Prenom>Nicolas</Prenom>
	
  	
  	
  	
  <Civilite>M.</Civilite>
	
  	
  	
  	
  <Voix>185	
  165</Voix>
	
  	
  	
  	
  <RapVoixExp>60,54</RapVoixExp>
	
  	
  	
  	
  <NumDepCand>12</NumDepCand>
	
  	
  	
  	
  <NumPanneauCand>1</NumPanneauCand>
	
  	
  </Candidat>
</Dpt>
Côté .Net

-       Application TechDays.UI
         -     Consommateur de messages
         -     Affiche les résultats reçus sur une carte
-       Librairie TechDays.Messaging.RabbitMQ
    -        Bibliothèque de production/consommation de
             messages
Côté Java


-   Application générant des résultats en boucle
-   Utilisation du driver Java RabbitMQ 2.7.1
Architecture
 Producteur Java              TechDays.UI


                   RabbitMQ   TechDays.UI



                              TechDays.UI
TechDays.Backend
Démo!
Sources


-       Seront disponibles rapidement sur GitHub
    -     https://github.com/zenika
Fier d’être
Développeur
Votez

-   Et merci à tous pour votre attention!
Questions?
Pics Credits
-       ‘Past’ by inf3ktion (CC BY-NC-SA 2.0)
    -      http://www.flickr.com/photos/inf3ktion/4116507516
-       ‘Server Room Powerstrips’ by camknows (CC BY-NC-SA 2.0)
    -      http://www.flickr.com/photos/camknows/3726757043/
-       ‘All The Same’ by inf3ktion (CC BY-NC-SA 2.0)
    -      http://www.flickr.com/photos/inf3ktion/3365226030
-       ‘Survivor’ by inf3ktion (CC BY-NC-SA 2.0)
    -      http://www.flickr.com/photos/inf3ktion/3876697091
-       ‘Server room with grass!’ by Tom Raftery, courtesy of 1E (CC BY-SA 2.0)
    -      http://www.flickr.com/photos/traftery/4773457853

Contenu connexe

Tendances

SDN: an introduction
SDN: an introductionSDN: an introduction
SDN: an introductionLuca Profico
 
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpecОбеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpecCisco Russia
 
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみたtokita-r
 
The World's First Cyber Weapon - Stuxnet
The World's First Cyber Weapon - StuxnetThe World's First Cyber Weapon - Stuxnet
The World's First Cyber Weapon - StuxnetSean Xie
 
Derevolutionizing OS Fingerprinting: The cat and mouse game
Derevolutionizing OS Fingerprinting: The cat and mouse gameDerevolutionizing OS Fingerprinting: The cat and mouse game
Derevolutionizing OS Fingerprinting: The cat and mouse gameJaime Sánchez
 
ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議emasaka
 
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012Jiunn-Jer Sun
 
Mpls by vidhu
Mpls by vidhuMpls by vidhu
Mpls by vidhuCU
 
Best Practices for Forwarder Hierarchies
Best Practices for Forwarder HierarchiesBest Practices for Forwarder Hierarchies
Best Practices for Forwarder HierarchiesSplunk
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめTetsuya Hasegawa
 
Data Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLData Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLEDB
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
Spring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスSpring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスKenji Kondo
 
InfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
InfluxDB + Telegraf Operator: Easy Kubernetes MonitoringInfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
InfluxDB + Telegraf Operator: Easy Kubernetes MonitoringInfluxData
 
Quarkus Denmark 2019
Quarkus Denmark 2019Quarkus Denmark 2019
Quarkus Denmark 2019Max Andersen
 

Tendances (20)

SDN: an introduction
SDN: an introductionSDN: an introduction
SDN: an introduction
 
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpecОбеспечение безопасности сети оператора связи с помощью BGP FlowSpec
Обеспечение безопасности сети оператора связи с помощью BGP FlowSpec
 
Snort
SnortSnort
Snort
 
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた
【GOJAS Meetup-10】Splunk:SmartStoreを使ってみた
 
The World's First Cyber Weapon - Stuxnet
The World's First Cyber Weapon - StuxnetThe World's First Cyber Weapon - Stuxnet
The World's First Cyber Weapon - Stuxnet
 
Derevolutionizing OS Fingerprinting: The cat and mouse game
Derevolutionizing OS Fingerprinting: The cat and mouse gameDerevolutionizing OS Fingerprinting: The cat and mouse game
Derevolutionizing OS Fingerprinting: The cat and mouse game
 
ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議ibus-skkをなんとかすっぺ会議
ibus-skkをなんとかすっぺ会議
 
Snort IPS
Snort IPSSnort IPS
Snort IPS
 
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012
Broadcast Storm - The Root Causes And The Solutions - Whitepaper 2012
 
Mpls by vidhu
Mpls by vidhuMpls by vidhu
Mpls by vidhu
 
Best Practices for Forwarder Hierarchies
Best Practices for Forwarder HierarchiesBest Practices for Forwarder Hierarchies
Best Practices for Forwarder Hierarchies
 
3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ3GPP TS 38.300-100まとめ
3GPP TS 38.300-100まとめ
 
Ospf
OspfOspf
Ospf
 
Data Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQLData Analysis with TensorFlow in PostgreSQL
Data Analysis with TensorFlow in PostgreSQL
 
Ospf.ppt
Ospf.pptOspf.ppt
Ospf.ppt
 
Amqp Basic
Amqp BasicAmqp Basic
Amqp Basic
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
Spring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービスSpring Cloud Data Flow で構成される IIJ IoTサービス
Spring Cloud Data Flow で構成される IIJ IoTサービス
 
InfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
InfluxDB + Telegraf Operator: Easy Kubernetes MonitoringInfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
InfluxDB + Telegraf Operator: Easy Kubernetes Monitoring
 
Quarkus Denmark 2019
Quarkus Denmark 2019Quarkus Denmark 2019
Quarkus Denmark 2019
 

En vedette

Scaling RabbitMQ to 11
Scaling RabbitMQ to 11Scaling RabbitMQ to 11
Scaling RabbitMQ to 11Gavin Roy
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP Eberhard Wolff
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQfcrippa
 
High powered messaging with RabbitMQ
High powered messaging with RabbitMQHigh powered messaging with RabbitMQ
High powered messaging with RabbitMQJames Carr
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQDmitriy Samovskiy
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQpieterh
 
Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014P. Taylor Goetz
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationnathanmarz
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopDataWorks Summit
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignMichael Noll
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureAlvaro Videla
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureP. Taylor Goetz
 

En vedette (16)

Scaling RabbitMQ to 11
Scaling RabbitMQ to 11Scaling RabbitMQ to 11
Scaling RabbitMQ to 11
 
Professional profile
Professional profileProfessional profile
Professional profile
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
 
Europycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQEuropycon2011: Implementing distributed application using ZeroMQ
Europycon2011: Implementing distributed application using ZeroMQ
 
High powered messaging with RabbitMQ
High powered messaging with RabbitMQHigh powered messaging with RabbitMQ
High powered messaging with RabbitMQ
 
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQIntroduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
 
Overview of ZeroMQ
Overview of ZeroMQOverview of ZeroMQ
Overview of ZeroMQ
 
Resource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache StormResource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache Storm
 
Symfony à la télé
Symfony à la téléSymfony à la télé
Symfony à la télé
 
Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014Scaling Apache Storm - Strata + Hadoop World 2014
Scaling Apache Storm - Strata + Hadoop World 2014
 
Storm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computationStorm: distributed and fault-tolerant realtime computation
Storm: distributed and fault-tolerant realtime computation
 
Realtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and HadoopRealtime Analytics with Storm and Hadoop
Realtime Analytics with Storm and Hadoop
 
Yahoo compares Storm and Spark
Yahoo compares Storm and SparkYahoo compares Storm and Spark
Yahoo compares Storm and Spark
 
Apache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - VerisignApache Storm 0.9 basic training - Verisign
Apache Storm 0.9 basic training - Verisign
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
 
Hadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm ArchitectureHadoop Summit Europe 2014: Apache Storm Architecture
Hadoop Summit Europe 2014: Apache Storm Architecture
 

Similaire à AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ

Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...sametmax
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOlivier DASINI
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturiteRémi Alvado
 
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaLes ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaDocDoku
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c mouad Lousimi
 
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
 
Extreme networks - Multi-Pathing L2 & SDN
Extreme networks - Multi-Pathing L2 & SDNExtreme networks - Multi-Pathing L2 & SDN
Extreme networks - Multi-Pathing L2 & SDNFrance IX Services
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
What's Next Replay - AMQP
What's Next Replay - AMQPWhat's Next Replay - AMQP
What's Next Replay - AMQPZenikaOuest
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureconfluent
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec GoMickaël Rémond
 

Similaire à AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ (20)

Apache kafka big data track
Apache kafka   big data trackApache kafka   big data track
Apache kafka big data track
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
Présentation de WAMP.ws, le protocole pour faire du PUB/SUB et RPC over Webso...
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier KrantzOps@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
Ops@viadeo : Puppet & Co... 6 mois après par Xavier Krantz
 
2013 01-08-php-maturite
2013 01-08-php-maturite2013 01-08-php-maturite
2013 01-08-php-maturite
 
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système JavaLes ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
 
Jms.back.to.basic
Jms.back.to.basicJms.back.to.basic
Jms.back.to.basic
 
Socket tcp ip client server on langace c
Socket tcp ip client server on langace c Socket tcp ip client server on langace c
Socket tcp ip client server on langace c
 
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
 
Vpn
VpnVpn
Vpn
 
Extreme networks - Multi-Pathing L2 & SDN
Extreme networks - Multi-Pathing L2 & SDNExtreme networks - Multi-Pathing L2 & SDN
Extreme networks - Multi-Pathing L2 & SDN
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Les Vpn
Les VpnLes Vpn
Les Vpn
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
What's Next Replay - AMQP
What's Next Replay - AMQPWhat's Next Replay - AMQP
What's Next Replay - AMQP
 
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architectureTartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
Tartine - Pixelle, Refonte de l’ingestion et présentation de l’architecture
 
my_resume(fre)
my_resume(fre)my_resume(fre)
my_resume(fre)
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec Go
 
Soap
SoapSoap
Soap
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Dernier

Protéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériqueProtéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériquePaperjam_redaction
 
cours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfcours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfHajer Boujezza
 
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Hajer Boujezza
 
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfModèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfHajer Boujezza
 
Slides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IASlides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IAInfopole1
 
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...OsharaInc
 

Dernier (6)

Protéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numériqueProtéger l'intégrité de son environnement numérique
Protéger l'intégrité de son environnement numérique
 
cours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdfcours Systèmes de Gestion des Identités.pdf
cours Systèmes de Gestion des Identités.pdf
 
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
Contrôle d’accès et Gestion des identités: Terminologies et Protocoles d’auth...
 
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdfModèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
Modèles de contrôle d accès_ RBAC (Role Based Access Control).pdf
 
Slides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IASlides du webinaire de l'Infopole sur l'IA
Slides du webinaire de l'Infopole sur l'IA
 
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
Augmentez vos conversions en ligne : les techniques et outils qui marchent vr...
 

AMQP: interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ

  • 1. AMQP Interopérabilité et découplage de systèmes hétérogènes avec RabbitMQ Pierre Queinnec @ZenikaIT Bernard Jourdain
  • 2. SI actuels - Grande hétérogénéité - ERP, CRM, DB, LDAP, etc, etc - différentes plateformes - différents langages - Couplages souvent forts - appels bloquants - formats spécifiques
  • 3.
  • 4. Découplage - Solution classique au couplage : MOM - Message-Oriented Middleware - Asynchronisme - “Donnée en mouvement” - Grands Acteurs - IBM, TIBCO, Microsoft
  • 5. Implémentations - Microsoft MSMQ - En Java/JEE, API standardisée JMS - uniquement une API - ne définit pas le format du message
  • 6. Topologies - P2P (peer-to-peer) - ESB (Entreprise Service Bus) - Pipeline - etc...
  • 7. Scalabilité - Difficultés des topologies “Cloud” - Machines provisionnées dynamiquement - Nécessité d’une interopérabilité entre middlewares
  • 8. AMQP - Advanced Message Queuing Protocol - But de réduire le “vendor lock-in”
  • 9. AMQP... un format - AMQP est un format de message - “wire-level” - Pas de langage/plateforme donnés, pas d’API - À la TCP - interopérable
  • 10. Protocoles - Pérennité protocolaire - IP, UDP, TCP - HTTP, SMTP
  • 11. Positionnement async SMTP ? sync HTTP IIOP unreliable reliable
  • 12. Propriétés - Fidelity - durabilité - Security - authentification, transport - Transactions - fiabilité - Smart routing - intermédiation - Management
  • 13. AMQP... un standard - Normalisé par l’OASIS - Version 1.0 en draft quasi-final - Technical Committee (TC) AMQP - Finance - Editeurs - Peu de Services
  • 14. Composition TC - JPMorgan, Goldman Sachs, Crédit Suisse, Deutsche Börse, Bank of America... - Microsoft,VMware, RedHat, Cisco, Kaazing... - HCL, Zenika
  • 15. AMQP... un standard - Au-delà du format de message... - “Broker Semantics” - Normalisation de l’interconnexion de brokers hétérogènes
  • 16. RabbitMQ - Implémentation de - AMQP 0-8-0 - AMQP 0-9 - AMQP 0-9-1 - AMQP 1.0 - Open-Source (MPL)
  • 17. RabbitMQ - Ecrit en Erlang - Bibliothèques pour tous les langages - plateformes - .Net - Java - Erlang, JavaScript, PHP, Ruby, Python...
  • 18. Routage AMQP Client sub pub Client E m m pub sub Client m m pub E Client sub Client m m m Exchanges Queues
  • 19. Workflow & Concepts - Un Producteur poste un couple {Clef de Routage, Message} vers un Exchange - Un Broker route un message vers une Queue en se basant sur sa Clef de Routage - Un Consommateur récupère un Message depuis une Queue - Un Message dans une Queue ne peut être récupéré que par un Consommateur
  • 20. Exchanges - Routage sur : - la clef de routage - les headers - les propriétés - le contenu
  • 21. Intro aux Exchanges - Quatre types d’Exchanges par défaut - Direct - Fanout - Topic - Headers
  • 22. Fanout - Aucun test sur la clef de routage - Le message est routé sur toutes les Queues bindées à l’Exchange
  • 23. Direct - Clef de routage obligatoire - Chaque Queue bindée à l’Exchange fournit une valeur de clef de routage - Pour chaque Queue, test d’égalité entre la clef de routage du message et la valeur fournie - Si égalité, copie du message dans la Queue - Exemple : clef = ‘nasdaq’
  • 24. Headers - Comme pour le type Direct, mais test d’égalité sur une valeur d’entêtes (“header”) plutôt que sur la clef de routage - Exemple (clef = valeur) - lang = javascript
  • 25. Topic - Comme pour le type Direct mais comparaison avec possibilité d’utiliser des wildcards - ‘*’ pour exactement un mot - ‘#’ pour zéro ou plus de mots - Exemples - comp.lang.# - *.erlang
  • 26. Queues - L’Exchange route les messages vers les Queues concernées - Si multiple Queues, le message est traité comme dupliqué - La Queue stocke le message jusqu’à ce qu’il soit récupéré par un consommateur - Mécanisme de sécurité sur la récupération des messages (ack)
  • 27. Cas Démo - Elections Présidentielles 2007 - Second tour - Visualisation des résultats du vote
  • 28. Côté .Net - MVVM Light (disponible avec Nuget) - RabbitMQ (disponible avec Nuget)
  • 29. Côté .Net - Application TechDays.Backend - Lit le fichier Index.xml qui donne l’état d’un département - Etat ‘CLOS’ : le résultat est là - Etat ‘NON CLOS’ : pas de résultat pour l’instant - Lorsque CLOS - lit le résultat - envoie un message à RabbitMQ
  • 30. Exemple ‘NON CLOS’ <Dpt>    <CodReg>82</CodReg>    <CodReg3Car>082</CodReg3Car>    <CodDpt>01</CodDpt>    <CodDpt3Car>001</CodDpt3Car>    <CodMinDpt>01</CodMinDpt>    <LibDpt>AIN</LibDpt>    <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>    <HeureClotureDpt>14:59:04</HeureClotureDpt>    <Clos>NON  CLOS</Clos> </Dpt>
  • 31. Exemple de résultat <Dpt>    <CodReg>82</CodReg>    <CodReg3Car>082</CodReg3Car>    <CodDpt>01</CodDpt>    <CodDpt3Car>001</CodDpt3Car>    <CodMinDpt>01</CodMinDpt>    <LibDpt>AIN</LibDpt>    <DateClotureDpt>19-­‐07-­‐2011</DateClotureDpt>    <HeureClotureDpt>14:59:04</HeureClotureDpt>    <Clos>CLOS</Clos>    <Candidat>        <Nom>SARKOZY</Nom>        <Prenom>Nicolas</Prenom>        <Civilite>M.</Civilite>        <Voix>185  165</Voix>        <RapVoixExp>60,54</RapVoixExp>        <NumDepCand>12</NumDepCand>        <NumPanneauCand>1</NumPanneauCand>    </Candidat> </Dpt>
  • 32. Côté .Net - Application TechDays.UI - Consommateur de messages - Affiche les résultats reçus sur une carte - Librairie TechDays.Messaging.RabbitMQ - Bibliothèque de production/consommation de messages
  • 33. Côté Java - Application générant des résultats en boucle - Utilisation du driver Java RabbitMQ 2.7.1
  • 34. Architecture Producteur Java TechDays.UI RabbitMQ TechDays.UI TechDays.UI TechDays.Backend
  • 36. Sources - Seront disponibles rapidement sur GitHub - https://github.com/zenika
  • 38. Votez - Et merci à tous pour votre attention!
  • 40. Pics Credits - ‘Past’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/4116507516 - ‘Server Room Powerstrips’ by camknows (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/camknows/3726757043/ - ‘All The Same’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/3365226030 - ‘Survivor’ by inf3ktion (CC BY-NC-SA 2.0) - http://www.flickr.com/photos/inf3ktion/3876697091 - ‘Server room with grass!’ by Tom Raftery, courtesy of 1E (CC BY-SA 2.0) - http://www.flickr.com/photos/traftery/4773457853