SlideShare a Scribd company logo
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

More Related Content

What's hot

Mule overview
Mule overviewMule overview
Mule overview
F K
 
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
Robert MacLean
 

What's hot (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
 

Similar to An eclipse client server architecture with asynchronous messaging

Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
l xf
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
Yaniv Uriel
 
Enterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdfEnterprise Messaging with RabbitMQ.pdf
Enterprise Messaging with RabbitMQ.pdf
Ortus Solutions, Corp
 

Similar to An eclipse client server architecture with asynchronous messaging (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
 
XMPP and SIP Presence Protocols for Messaging and Session Control.pptx
XMPP and SIP Presence Protocols for Messaging and Session Control.pptxXMPP and SIP Presence Protocols for Messaging and Session Control.pptx
XMPP and SIP Presence Protocols for Messaging and Session Control.pptx
 
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
 

Recently uploaded

Recently uploaded (20)

From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
In-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT ProfessionalsIn-Depth Performance Testing Guide for IT Professionals
In-Depth Performance Testing Guide for IT Professionals
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

An eclipse client server architecture with asynchronous messaging

  • 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