SlideShare une entreprise Scribd logo
1  sur  8
An eclipse client server architecture
  with asynchronous messaging
          based on XMPP
               Thomas Kratz
         EclipseCon Europe 2011
What is XMPP?
•   eXtensible Messaging and Presence Protocol
•   Bi-directional streaming XML
•   Core: IETF RFC 3920, 3921
•   Extensions: XMPP Standards Foundation (XSF)
    –   Membership-based
    –   Elected technical council
    –   Unit of work: XMPP Extension Protocol (XEP)
    –   Process: Experimental, Proposed, Draft, Final
• Goals:
    – Simple clients
    – Federate everything
XMPP Architecture
•   Addressing Scheme: node@domain/resource
     – JID = Jabber ID
     – Node: identity, e.g. user name
     – Domain: DNS domain name
     – Resource: device identifier
     – node@domain identifies a person
•   Client talks to “local” server
     – Wherever the user account is hosted
     – Tied to directory if desired
     – Organizational policy enforced
•   Servers talk to other servers
     – DNS lookup on domain portion of address
     – Dialback, MTLS for security
     – One connection for many conversations
The Mango stack



      Client
               Synchronous remote   Asynchronous
               service calls        notifications
               through Spring‘s     through Smack
               HttpInvoker          XMPP Api




     Server
Long running tasks

• http-service call spawns a worker thread on
  the server and returns immediately
• Client UI runs a fake worker job (Eclipse Jobs
  API) that listens to XMPP messages
• Worker Thread reports progress to client Job
  through XMPP messages
• Client Job fetches result through second http-
  service call
Not so optimistic
locking
• Eclipse Editor lifecycle sends XMPP messages
  on open/save/close
• Server keeps track of opened database
  entities
• Sends warning on possible conflict
• If an enitity gets changed, other users get
  notified to reload their editor input to prevent
  conflicts.
Floating Licene

• Server listens to the „Presence“ part of the
  XMPP protocol
• Keeps track of online users
• Rejects login if maximum user count is
  exceeded
• Notifies online users before server shutdown
  to prevent data loss.
Q&A


• Thank you for listening!

• Reach me at eiswind@googlemail.com

Contenu connexe

Tendances

Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7StephenKardian
 
Mule overview
Mule overviewMule overview
Mule overviewF K
 
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)IT-Доминанта
 
What is new in .NET 4.5
What is new in .NET 4.5What is new in .NET 4.5
What is new in .NET 4.5Robert MacLean
 
Ejabberd with xmpp
Ejabberd with xmppEjabberd with xmpp
Ejabberd with xmppPrem Narain
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in ContainernetAndrew Wang
 
Reactive programming
Reactive programmingReactive programming
Reactive programmingsaykopatt
 
Fast SOA with Apache Synapse
Fast SOA with Apache SynapseFast SOA with Apache Synapse
Fast SOA with Apache SynapsePaul Fremantle
 
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...Sergio Compean
 
Mule MongoDB connector
Mule MongoDB connectorMule MongoDB connector
Mule MongoDB connectorAnkush Sharma
 
Rpc framework
Rpc frameworkRpc framework
Rpc frameworkjuly mon
 

Tendances (20)

XMPP Academy #2
XMPP Academy #2XMPP Academy #2
XMPP Academy #2
 
Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7Introduction to Long Running Workflows 3.7
Introduction to Long Running Workflows 3.7
 
Mule java part-1
Mule java part-1Mule java part-1
Mule java part-1
 
Test
TestTest
Test
 
Mule: Java Component
Mule: Java ComponentMule: Java Component
Mule: Java Component
 
Mule overview
Mule overviewMule overview
Mule overview
 
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
Работаем с RabbitMQ в Python используя kombu + gevent. (Rinat khabibiev)
 
Asynchronous AMQP
Asynchronous AMQPAsynchronous AMQP
Asynchronous AMQP
 
What is new in .NET 4.5
What is new in .NET 4.5What is new in .NET 4.5
What is new in .NET 4.5
 
Ejabberd with xmpp
Ejabberd with xmppEjabberd with xmpp
Ejabberd with xmpp
 
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet[Draft] Fast Prototyping with DPDK and eBPF in Containernet
[Draft] Fast Prototyping with DPDK and eBPF in Containernet
 
Mule esb usecase
Mule esb usecaseMule esb usecase
Mule esb usecase
 
Reactive programming
Reactive programmingReactive programming
Reactive programming
 
Lecture19
Lecture19Lecture19
Lecture19
 
Fast SOA with Apache Synapse
Fast SOA with Apache SynapseFast SOA with Apache Synapse
Fast SOA with Apache Synapse
 
Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17Jakarta EE 8 on JDK17
Jakarta EE 8 on JDK17
 
Mule: Java Transformer
Mule: Java TransformerMule: Java Transformer
Mule: Java Transformer
 
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
Discover the Capabilities of Windows Azure Service Bus to Power Agile Busines...
 
Mule MongoDB connector
Mule MongoDB connectorMule MongoDB connector
Mule MongoDB connector
 
Rpc framework
Rpc frameworkRpc framework
Rpc framework
 

Similaire à An eclipse client server architecture with asynchronous messaging based on XMPP

Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabberl xf
 
Tcpip services and applications
Tcpip services and applicationsTcpip services and applications
Tcpip services and applicationsOnline
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPGenora Infotech
 
Unit 3 - Protocols and Client-Server Applications - IT
Unit 3 - Protocols and Client-Server Applications - ITUnit 3 - Protocols and Client-Server Applications - IT
Unit 3 - Protocols and Client-Server Applications - ITDeepraj Bhujel
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafkaemreakis
 
Performance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebPerformance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebMarkku Laine
 
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...LINE Corporation
 
Application layer in network system
Application layer in network systemApplication layer in network system
Application layer in network systemSalauddin Rubel
 
Computer networks unit v
Computer networks    unit vComputer networks    unit v
Computer networks unit vJAIGANESH SEKAR
 
Network protocol
Network protocolNetwork protocol
Network protocolOnline
 
Module 5 Application and presentation Layer .pptx
Module 5 Application and presentation Layer .pptxModule 5 Application and presentation Layer .pptx
Module 5 Application and presentation Layer .pptxAASTHAJAJOO
 
009478419.pdf
009478419.pdf009478419.pdf
009478419.pdfEidTahir
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NETYaniv Uriel
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfOrtus Solutions, Corp
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQZoran Majstorovic
 
Xmpp presentation
Xmpp presentationXmpp presentation
Xmpp presentationJava Pro
 

Similaire à An eclipse client server architecture with asynchronous messaging based on XMPP (20)

Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
 
Tcpip services and applications
Tcpip services and applicationsTcpip services and applications
Tcpip services and applications
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
 
Unit 3 - Protocols and Client-Server Applications - IT
Unit 3 - Protocols and Client-Server Applications - ITUnit 3 - Protocols and Client-Server Applications - IT
Unit 3 - Protocols and Client-Server Applications - IT
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Performance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the WebPerformance Evaluation of XMPP on the Web
Performance Evaluation of XMPP on the Web
 
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...
Building a company-wide data pipeline on Apache Kafka - engineering for 150 b...
 
Application layer in network system
Application layer in network systemApplication layer in network system
Application layer in network system
 
Computer networks unit v
Computer networks    unit vComputer networks    unit v
Computer networks unit v
 
Network protocol
Network protocolNetwork protocol
Network protocol
 
Module 5 Application and presentation Layer .pptx
Module 5 Application and presentation Layer .pptxModule 5 Application and presentation Layer .pptx
Module 5 Application and presentation Layer .pptx
 
Xmpp presentation
Xmpp   presentationXmpp   presentation
Xmpp presentation
 
applayer.pptx
applayer.pptxapplayer.pptx
applayer.pptx
 
009478419.pdf
009478419.pdf009478419.pdf
009478419.pdf
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
 
Computer networks
Computer networksComputer networks
Computer networks
 
Ruby Microservices with RabbitMQ
Ruby Microservices with RabbitMQRuby Microservices with RabbitMQ
Ruby Microservices with RabbitMQ
 
Xmpp presentation
Xmpp presentationXmpp presentation
Xmpp presentation
 
SNMP/SMTP/MIME
SNMP/SMTP/MIMESNMP/SMTP/MIME
SNMP/SMTP/MIME
 

Dernier

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Dernier (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

An eclipse client server architecture with asynchronous messaging based on XMPP

  • 1. An eclipse client server architecture with asynchronous messaging based on XMPP Thomas Kratz EclipseCon Europe 2011
  • 2. What is XMPP? • eXtensible Messaging and Presence Protocol • Bi-directional streaming XML • Core: IETF RFC 3920, 3921 • Extensions: XMPP Standards Foundation (XSF) – Membership-based – Elected technical council – Unit of work: XMPP Extension Protocol (XEP) – Process: Experimental, Proposed, Draft, Final • Goals: – Simple clients – Federate everything
  • 3. XMPP Architecture • Addressing Scheme: node@domain/resource – JID = Jabber ID – Node: identity, e.g. user name – Domain: DNS domain name – Resource: device identifier – node@domain identifies a person • Client talks to “local” server – Wherever the user account is hosted – Tied to directory if desired – Organizational policy enforced • Servers talk to other servers – DNS lookup on domain portion of address – Dialback, MTLS for security – One connection for many conversations
  • 4. The Mango stack Client Synchronous remote Asynchronous service calls notifications through Spring‘s through Smack HttpInvoker XMPP Api Server
  • 5. Long running tasks • http-service call spawns a worker thread on the server and returns immediately • Client UI runs a fake worker job (Eclipse Jobs API) that listens to XMPP messages • Worker Thread reports progress to client Job through XMPP messages • Client Job fetches result through second http- service call
  • 6. Not so optimistic locking • Eclipse Editor lifecycle sends XMPP messages on open/save/close • Server keeps track of opened database entities • Sends warning on possible conflict • If an enitity gets changed, other users get notified to reload their editor input to prevent conflicts.
  • 7. Floating Licene • Server listens to the „Presence“ part of the XMPP protocol • Keeps track of online users • Rejects login if maximum user count is exceeded • Notifies online users before server shutdown to prevent data loss.
  • 8. Q&A • Thank you for listening! • Reach me at eiswind@googlemail.com