SlideShare a Scribd company logo
Boring, complex, painful Messaging in the 21st Century by Pieter Hintjens, iMatix Corporation FOSDEM, 2009-02-07
What is “SOA”? Slashdot comment #26489673: > State Of the Art > Sarbanes-Oxley Act > State Of Alaska (you betcha) > S eksueel Overdraagbare Aandoening > Sega of America
Complex, Boring, Painful It's good for the closed-source business Keeps away competition, locks in clients Messaging is the last big frontier 90% or more is closed source, locked in Our goals: Make it open Make it simple Change the market
Why Messaging? Every big project invents messaging Badly! It's an easy question: “connect A to B” The answer... not so easy Addressing, queuing, reliability, transport Costs of software, skills, investment No-one has the  right  answers Until recently...
Introducing AMQP A general purpose messaging architecture Replaces custom messaging everywhere Replaces many proprietary products An open protocol Interoperation, competition, choice Low cost, FOSS products Designed by users, and small IT firms So it's  reasonably  good http://www.amqp.org
iMatix OpenAMQ iMatix's AMQP server & client product FOSS - of course! Started in 2004 in parallel with AMQP Reasonably fast - 500,000 msg/sec Stable, comfortable under pressure Built with iMatix Base2 metacode toolset LOC:937,201 - MLOC:159,748 -  MMLOC:68,801 http://www.openamq.org
Making it Simpler Simplicity is the destination, not the start AMQP is OK but can be improved Protocol is too complex We were learning when we made it Architecture has some flaws Queuing and routing is  not  easy No real community Process is opaque and exclusive
REST The web's answer to SOAP and WS RESTful pattern for messaging Create-read-update-delete stuff on a server Server-generated URIs for resources Scalable, cacheable, simple " Moving to pure HTTP allowed us to throw away the code for the XML-RPC service. (I love throwing away old code ;-) "
RestMS G.P. messaging protocol for the web It's AMQP, but RESTful Works over plain HTTP (or HTTPS) Cleans up the AMQP model => Feeds, Pipes, Joins, Messages Speaks to AMQP servers Free and open protocol http://www.restms.org
RestMS example - client POST /restms/domain/default Content-Type: application/restms+xml Slug: fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; /> </restms>
RestMS example - server HTTP/1.1 201 Created Content-Type: application/restms+xml Location: http://host.com/restms/feed/fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot;  name=&quot;fortune&quot; /> </restms>
Zyre iMatix's RestMS server Open source - of course! Started in 2008 together with RestMS Built on Base2, so multicore scalable Currently part of OpenAMQ project Acts as AMQP<=>HTTP multiplexer 3,353 MMLOC http://www.zyre.com
X5 iMatix's web server Provides HTTP web front-end for Zyre Based on Xitami (popular web server from 1990's) Ported to Base2, so fast, scalable, robust Part of Base2 today, separate later 3,457 MMLOC http://xitami.wikidot.com
Live Zyre http://live.zyre.com Open RestMS server - zero install Runs latest builds of Zyre and OpenAMQ use RestMS (); my $domain = RestMS::Domain->new (hostname => &quot;live.zyre.com&quot;); my $feed = $domain->feed (name => &quot;ublog&quot;, type => &quot;fanout&quot;); my $message = RestMS::Message->new; $message->content (shift); $message->headers (name => &quot;Jeep Nine Thirst&quot;); $feed->send ($message);
Conclusions Messaging can be simple, and fun New open protocols change the game AMQP is still somewhat complex RestMS is much simpler Try RestMS in your web apps Contribute classes in Python, Ruby, Lua,... Start to learn to use messaging Build more ambitious apps
Thank you For more information please contact the author at ph@imatix.com Comment & discuss at: zyre.com openamq.org restms.org

More Related Content

ODP
RestMS Introduction
ODP
CurveZMQ, ZMTP and other Dubious Characters
PDF
Switch or broker
PDF
NullMQ @ PDX
PDF
Lindsay distributed geventzmq
PDF
Think beyond http
PPTX
Zero mq
RestMS Introduction
CurveZMQ, ZMTP and other Dubious Characters
Switch or broker
NullMQ @ PDX
Lindsay distributed geventzmq
Think beyond http
Zero mq

What's hot (19)

PPT
The Pillars Of Concurrency
PPTX
Let your stuff talk!
PPT
Intro to Node.js
PDF
Nginx: From Russia With Love
PDF
Docker on Mesos With OpenVNet (eng)
PPTX
Mesos network isolation at Criteo
PPTX
Hang fire
ODP
Rabbit mq, amqp and php
PPTX
Rabbit MQ
PDF
Scaling out eclipse hono
PDF
Using SCTP with Scamper and Netty
KEY
Wordpress Meetup ISCTE
PDF
An introduction to MQTT - Pub / Sub for the masses
PPT
VWBPE 2020 - Overcoming LSL Limitations in Second Life
PPTX
Rust programming-language
PDF
An introduction to node3
PPTX
Notes on Netty baics
PDF
PHP at Density and Scale
PDF
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
The Pillars Of Concurrency
Let your stuff talk!
Intro to Node.js
Nginx: From Russia With Love
Docker on Mesos With OpenVNet (eng)
Mesos network isolation at Criteo
Hang fire
Rabbit mq, amqp and php
Rabbit MQ
Scaling out eclipse hono
Using SCTP with Scamper and Netty
Wordpress Meetup ISCTE
An introduction to MQTT - Pub / Sub for the masses
VWBPE 2020 - Overcoming LSL Limitations in Second Life
Rust programming-language
An introduction to node3
Notes on Netty baics
PHP at Density and Scale
How to cook Rabbit on Production - Serhiy Nazarov | Ruby Meditation 28
Ad

Viewers also liked (16)

PPTX
Etnografia de america
PPTX
Deploying FuseMQ with Fuse Fabric
ODP
Software Architecture using ZeroMQ - techmesh 2012
ODP
Git Without Branches - Simple, Smooth, Scalable
ODP
Revolutionary Open Source
ODP
Social architecture-101
PDF
Introduction to ActiveMQ Apollo
PPTX
Integration with Salesforce using Mule ESB
PDF
Software Architecture over ZeroMQ
PPTX
ZeroMQ: Super Sockets - by J2 Labs
PPTX
Build reliable, traceable, distributed systems with ZeroMQ
ODP
FOSDEM 2011 - 0MQ
KEY
Europycon2011: Implementing distributed application using ZeroMQ
PDF
ZeroMQ Is The Answer
PDF
Introduction to AMQP Messaging with RabbitMQ
ODP
Overview of ZeroMQ
Etnografia de america
Deploying FuseMQ with Fuse Fabric
Software Architecture using ZeroMQ - techmesh 2012
Git Without Branches - Simple, Smooth, Scalable
Revolutionary Open Source
Social architecture-101
Introduction to ActiveMQ Apollo
Integration with Salesforce using Mule ESB
Software Architecture over ZeroMQ
ZeroMQ: Super Sockets - by J2 Labs
Build reliable, traceable, distributed systems with ZeroMQ
FOSDEM 2011 - 0MQ
Europycon2011: Implementing distributed application using ZeroMQ
ZeroMQ Is The Answer
Introduction to AMQP Messaging with RabbitMQ
Overview of ZeroMQ
Ad

Similar to Fosdem 2009 (20)

ODP
The Art of Message Queues - TEKX
PPTX
High powered messaging with RabbitMQ
PPT
Easy enterprise application integration with RabbitMQ and AMQP
PDF
Enterprise Messaging with RabbitMQ.pdf
PDF
Message Queues : A Primer - International PHP Conference Fall 2012
KEY
High scale flavour
PDF
Ruby Microservices with RabbitMQ
PDF
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
PDF
Erlang factory slides
PDF
Erlang factory slides
PDF
Messaging for the Internet of Awesome Things
PDF
Message Queuing - Gearman, Mosquitto, Kafka and RabbitMQ
PDF
Open source Tools and Frameworks for M2M - Sierra Wireless Developer Days
PDF
OpenMQ Aquarium Paris
KEY
PPT
Rabbit MQ introduction
PDF
The Future of Messaging: RabbitMQ and AMQP
PDF
PPTX
RabbitMQ and EasyNetQ
PDF
Eclipse Paho - MQTT and the Internet of Things
The Art of Message Queues - TEKX
High powered messaging with RabbitMQ
Easy enterprise application integration with RabbitMQ and AMQP
Enterprise Messaging with RabbitMQ.pdf
Message Queues : A Primer - International PHP Conference Fall 2012
High scale flavour
Ruby Microservices with RabbitMQ
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
Erlang factory slides
Erlang factory slides
Messaging for the Internet of Awesome Things
Message Queuing - Gearman, Mosquitto, Kafka and RabbitMQ
Open source Tools and Frameworks for M2M - Sierra Wireless Developer Days
OpenMQ Aquarium Paris
Rabbit MQ introduction
The Future of Messaging: RabbitMQ and AMQP
RabbitMQ and EasyNetQ
Eclipse Paho - MQTT and the Internet of Things

Recently uploaded (20)

PDF
NewMind AI Monthly Chronicles - July 2025
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Empathic Computing: Creating Shared Understanding
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Cloud computing and distributed systems.
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Machine learning based COVID-19 study performance prediction
NewMind AI Monthly Chronicles - July 2025
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Empathic Computing: Creating Shared Understanding
MYSQL Presentation for SQL database connectivity
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Big Data Technologies - Introduction.pptx
Cloud computing and distributed systems.
Unlocking AI with Model Context Protocol (MCP)
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Approach and Philosophy of On baking technology
Mobile App Security Testing_ A Comprehensive Guide.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Network Security Unit 5.pdf for BCA BBA.
NewMind AI Weekly Chronicles - August'25 Week I
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Diabetes mellitus diagnosis method based random forest with bat algorithm
Machine learning based COVID-19 study performance prediction

Fosdem 2009

  • 1. Boring, complex, painful Messaging in the 21st Century by Pieter Hintjens, iMatix Corporation FOSDEM, 2009-02-07
  • 2. What is “SOA”? Slashdot comment #26489673: > State Of the Art > Sarbanes-Oxley Act > State Of Alaska (you betcha) > S eksueel Overdraagbare Aandoening > Sega of America
  • 3. Complex, Boring, Painful It's good for the closed-source business Keeps away competition, locks in clients Messaging is the last big frontier 90% or more is closed source, locked in Our goals: Make it open Make it simple Change the market
  • 4. Why Messaging? Every big project invents messaging Badly! It's an easy question: “connect A to B” The answer... not so easy Addressing, queuing, reliability, transport Costs of software, skills, investment No-one has the right answers Until recently...
  • 5. Introducing AMQP A general purpose messaging architecture Replaces custom messaging everywhere Replaces many proprietary products An open protocol Interoperation, competition, choice Low cost, FOSS products Designed by users, and small IT firms So it's reasonably good http://www.amqp.org
  • 6. iMatix OpenAMQ iMatix's AMQP server & client product FOSS - of course! Started in 2004 in parallel with AMQP Reasonably fast - 500,000 msg/sec Stable, comfortable under pressure Built with iMatix Base2 metacode toolset LOC:937,201 - MLOC:159,748 - MMLOC:68,801 http://www.openamq.org
  • 7. Making it Simpler Simplicity is the destination, not the start AMQP is OK but can be improved Protocol is too complex We were learning when we made it Architecture has some flaws Queuing and routing is not easy No real community Process is opaque and exclusive
  • 8. REST The web's answer to SOAP and WS RESTful pattern for messaging Create-read-update-delete stuff on a server Server-generated URIs for resources Scalable, cacheable, simple &quot; Moving to pure HTTP allowed us to throw away the code for the XML-RPC service. (I love throwing away old code ;-) &quot;
  • 9. RestMS G.P. messaging protocol for the web It's AMQP, but RESTful Works over plain HTTP (or HTTPS) Cleans up the AMQP model => Feeds, Pipes, Joins, Messages Speaks to AMQP servers Free and open protocol http://www.restms.org
  • 10. RestMS example - client POST /restms/domain/default Content-Type: application/restms+xml Slug: fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; /> </restms>
  • 11. RestMS example - server HTTP/1.1 201 Created Content-Type: application/restms+xml Location: http://host.com/restms/feed/fortune <?xml version=&quot;1.0&quot;?> <restms> <feed type=&quot;service&quot; name=&quot;fortune&quot; /> </restms>
  • 12. Zyre iMatix's RestMS server Open source - of course! Started in 2008 together with RestMS Built on Base2, so multicore scalable Currently part of OpenAMQ project Acts as AMQP<=>HTTP multiplexer 3,353 MMLOC http://www.zyre.com
  • 13. X5 iMatix's web server Provides HTTP web front-end for Zyre Based on Xitami (popular web server from 1990's) Ported to Base2, so fast, scalable, robust Part of Base2 today, separate later 3,457 MMLOC http://xitami.wikidot.com
  • 14. Live Zyre http://live.zyre.com Open RestMS server - zero install Runs latest builds of Zyre and OpenAMQ use RestMS (); my $domain = RestMS::Domain->new (hostname => &quot;live.zyre.com&quot;); my $feed = $domain->feed (name => &quot;ublog&quot;, type => &quot;fanout&quot;); my $message = RestMS::Message->new; $message->content (shift); $message->headers (name => &quot;Jeep Nine Thirst&quot;); $feed->send ($message);
  • 15. Conclusions Messaging can be simple, and fun New open protocols change the game AMQP is still somewhat complex RestMS is much simpler Try RestMS in your web apps Contribute classes in Python, Ruby, Lua,... Start to learn to use messaging Build more ambitious apps
  • 16. Thank you For more information please contact the author at ph@imatix.com Comment & discuss at: zyre.com openamq.org restms.org