SlideShare a Scribd company logo
RabbitMQ + JavaScript
JS Remote Conf 2017
Presenter Info
Bart Wood
Distinguished Software Engineer at Henry Schein
(medical/dental company)
I work on large Single Page Applications for dentists
JavaScript + Java-esque Backend
Front end + Back end
What to talk about?
Message Queues and RabbitMQ
JavaScript + STOMP to communicate with RabbitMQ
Possibilities with this technology
Presentation Content
Slides here: https://www.slideshare.net/BartWood/js-remote-conf
Amusing pictures to compensate for bland slide design
Queues are useful
Decouple publishers and consumers.
Guaranteed (near 100%) message delivery.
Publishers and consumers can process at different rates. Auto-scale
Asynchronous (scalable) by default. Synchronous is possible.
Foundation for service integration.
Publisher Queue Magic Consumer
RabbitMQ
Based on a standard called AMQP (Advanced Message Queuing
Protocol (version 0-9-1)
Born around 2003 in the financial industry
Extremely flexible compared to previous queuing tech
RabbitMQ Installation
Takes around 15-30 minutes to install RabbitMQ on Linux etc.
https://www.rabbitmq.com/install-debian.html
How to install Web STOMP for RabbitMQ
http://www.rabbitmq.com/blog/2012/05/14/introducing-rabbitmq-web-stomp/
Demos running with RabbitMQ on Ubuntu VM
CloudAMQP.com
CloudAMQP.com is a hosted Rabbit solution.
Easy / no admin or local servers needed.
$99+ / month for instance that can use STOMP with JavaScript.
Need to use SockJS, native WebSockets not possible for now.
RabbitMQ Basics
Publisher
Java,
JavaScript,
Etc.
Exchange Queue
Consumer
Java,
JavaScript,
Etc.
Exchanges: Like a DNS routing table, routes message
Direct Exchange: Simple Routing Key
Topic Exchange: Complex Routing Key
publish: keyPartOne.keyPartTwo.keyPartThree
consume: keyPartOne.*.*
VHost: Like a sandbox in RabbitMQ
Auto Delete Queue
Routing Key
Durable Queue
Exclusive Queue
Queue ..
Exchange …
RK
Consumer ..Publisher ..
Queues can have many consumers.
Message only goes to a single consumer.
Round robin balancing.
Data persisted if no
consumers
Only a single consumer
Deleted when consumer
dies
Rabbit Cluster
JavaScript > RabbitMQ Stack
JavaScript code
Stomp.js / STOMP protocol
Web Sockets / optional SockJS
RabbitMQ Server rabbitmq_web_stomp plugin
STOMP Protocol
Streaming Text Oriented Message Protocol.
Basic commands such as CONNECT, SEND, SUBSCRIBE, ETC.
Sits on top of Web Sockets (ws or wss)
Rabbit also supports MQTT (internet of things) and HTTP(S)
Your refrigerator (MQTT) can communicate with your web app (STOMP)
via RabbitMQ
Stomp.js
Very small / simple.
http://jmesnil.net/stomp-websocket/doc/
No longer “supported” but it still works very well and it’s simple / small.
Supports older STOMP 1.1 but latest STOMP 1.2 isn’t very different
Fairly easy to update in the future.
SockJS.js (optional)
Websockets for older browsers
http://caniuse.com/#search=websocket
https://github.com/sockjs/sockjs-client
CloudAMQP appears to require it.
Custom RabbitMQ installs do not.
Bunny Draw Demo
http://xxx:15670/web-stomp-examples/bunny.html?ws
<script src="stomp.js"></script>
var ws = new WebSocket('ws://' + window.location.hostname + ':15674/ws');
var client = Stomp.over(ws);
var on_error = function() {console.log('error');};
var on_connect = function(x) {
client.subscribe('/topic/bunny', function(d) {
var point = JSON.parse(d.body); // code omitted …
});
};
client.connect(‘guest', ‘guest', on_connect, on_error, '/');
var send = function(data) {
client.send('/topic/bunny', {}, data);
};
// The security model is only for demo purposes.
// Using the default Vhost of ‘/’
// Using a simple routing key of ‘bunny’
RabbitMQ STOMP destination header
https://www.rabbitmq.com/stomp.html
client.send('/topic/bunny‘ …
client.subscribe('/topic/bunny‘ …
Publish / consume to queues managed by the STOMP gateway:
/queue/<simpleRoutingKey>
Publish / consume to queues NOT managed by the STOMP gateway: (queues not auto-created)
/amq/queue/<simpleRoutingKey>
Publish / consume to topics managed by the default exchange “amq.topic”:
/topic/< wildCardRoutingKey >
Publish / consume to named topic exchanges:
/exchange/<topicExchangeName>/<wildCardRoutingKey>
Stomp Protocol Headers
https://www.rabbitmq.com/stomp.html
client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) {
// message handler logic here
}, {id: 'my-durable-queue', durable: true, 'auto-delete': false});
STOMP Headers can be passed as argument to the Stomp.js functions:
connect
disconnect
subscribe
send
ack/nack
Possible header options:
destination, id, durable, auto-delete, reply-to, exclusive
Advanced options:
x-dead-letter-exchange, x-dead-letter-routing-key, x-expires, x-message-ttl, etc.
RabbitMQ Security
Anything that can be done with Http can be done with RabbitMQ (with a bit
of work). AMQP is simply another protocol like Http.
Demo rabbit security settings
https://www.rabbitmq.com/access-control.html
Delegate security to Web Service (filter before Rabbit handles requests)
https://github.com/rabbitmq/rabbitmq-auth-backend-http
Custom tokens in headers (like Oauth 2)
Demo Topic Exchange / Routing Keys
// Auto deleted queue example
client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) {
console.log(msg.body);
});
// Durable queue example. Lost messages will be shown when browser re-connects
client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) {
console.log(msg.body);
}, {id: 'my-durable-queue', durable: true, 'auto-delete': false});
Foundations for an
Enterprise Service Bus
Other simpler products out there for simple pub/sub over Http
WebSync, etc.
Same bus / channels to integrate state between servers, browsers,
micro-services, third party partners etc.
Foundation of Enterprise Service Bus
Service A
Cluster
Service B
Cluster
Third Party
Integration A
Third Party
Integration B
Browser 1 Browser 13,932
Rabbit
Cluster
Http
Load Balancer
Replace Http
With STOMP
Done. Questions?

More Related Content

Viewers also liked (7)

PPTX
Kojak Metrics Explained
Bart Wood
 
PDF
How to Pay Less for your Semester Abroad
jenilporg
 
PPTX
RabbitMq
Ahmad Saif
 
PPTX
Troubleshooting common oslo.messaging and RabbitMQ issues
Michael Klishin
 
PDF
The Future of Messaging: RabbitMQ and AMQP
Eberhard Wolff
 
PDF
20170224 웹월드컨퍼런스 공유본
준완 박
 
PDF
Deploying Immutable infrastructures with RabbitMQ and Solr
Jordi Llonch
 
Kojak Metrics Explained
Bart Wood
 
How to Pay Less for your Semester Abroad
jenilporg
 
RabbitMq
Ahmad Saif
 
Troubleshooting common oslo.messaging and RabbitMQ issues
Michael Klishin
 
The Future of Messaging: RabbitMQ and AMQP
Eberhard Wolff
 
20170224 웹월드컨퍼런스 공유본
준완 박
 
Deploying Immutable infrastructures with RabbitMQ and Solr
Jordi Llonch
 

Similar to Js remote conf (20)

PPT
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
John Staveley
 
PDF
Python Ireland 2012 - Message brokers and Python by Fernando Ciciliati
Python Ireland
 
PPTX
Mom those things v1
von gosling
 
ODP
The Art of Message Queues - TEKX
Mike Willbanks
 
ODP
Fosdem 2009
pieterh
 
ODP
Art Of Message Queues
Mike Willbanks
 
PPT
Xke - Introduction to Apache Camel
Alexis Kinsella
 
PDF
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
PPTX
Ground-Cloud-Cloud-Ground - NAB 2022 IP Showcase
Kieran Kunhya
 
DOCX
Azure Service Bus Performance Checklist
Salim M Bhonhariya
 
PDF
Down the RabbitMQ Hole
BizTalk360
 
KEY
The HTML5 WebSocket API
David Lindkvist
 
PPT
RabbitMQ Protocol Essentials - Introduction for beginners
-
 
PPT
f2f-overview12.ppt
wentaozhu3
 
PPT
f2f-overview1-presentation about rabbitmq and middleware
ndonikristi98
 
PPT
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
 
PPTX
SignalR Intro + WPDev
Sam Basu
 
PDF
mqttvsrest_v4.pdf
RaghuKiran29
 
PPTX
IoTMyth Proposal
Alfian Firmansyah
 
Messaging - RabbitMQ, Azure (Service Bus), Docker and Azure Functions
John Staveley
 
Python Ireland 2012 - Message brokers and Python by Fernando Ciciliati
Python Ireland
 
Mom those things v1
von gosling
 
The Art of Message Queues - TEKX
Mike Willbanks
 
Fosdem 2009
pieterh
 
Art Of Message Queues
Mike Willbanks
 
Xke - Introduction to Apache Camel
Alexis Kinsella
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
sametmax
 
Ground-Cloud-Cloud-Ground - NAB 2022 IP Showcase
Kieran Kunhya
 
Azure Service Bus Performance Checklist
Salim M Bhonhariya
 
Down the RabbitMQ Hole
BizTalk360
 
The HTML5 WebSocket API
David Lindkvist
 
RabbitMQ Protocol Essentials - Introduction for beginners
-
 
f2f-overview12.ppt
wentaozhu3
 
f2f-overview1-presentation about rabbitmq and middleware
ndonikristi98
 
HTML5 WebSocket: The New Network Stack for the Web
Peter Lubbers
 
SignalR Intro + WPDev
Sam Basu
 
mqttvsrest_v4.pdf
RaghuKiran29
 
IoTMyth Proposal
Alfian Firmansyah
 
Ad

Recently uploaded (20)

PDF
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
PPTX
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PDF
UI/UX Developer Guide: Tools, Trends, and Tips for 2025
Penguin peak
 
PPTX
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
PDF
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
PPTX
Google SGE SEO: 5 Critical Changes That Could Wreck Your Rankings in 2025
Reversed Out Creative
 
PPTX
B2B_Ecommerce_Internship_Simranpreet.pptx
LipakshiJindal
 
PPTX
The Monk and the Sadhurr and the story of how
BeshoyGirgis2
 
PPTX
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
PDF
GEO Strategy 2025: Complete Presentation Deck for AI-Powered Customer Acquisi...
Zam Man
 
PPTX
Pengenalan perangkat Jaringan komputer pada teknik jaringan komputer dan tele...
Prayudha3
 
PPTX
办理方法西班牙假毕业证蒙德拉贡大学成绩单MULetter文凭样本
xxxihn4u
 
PPT
Introduction to dns domain name syst.ppt
MUHAMMADKAVISHSHABAN
 
PPTX
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
PPTX
Different Generation Of Computers .pptx
divcoder9507
 
PPTX
Blue and Dark Blue Modern Technology Presentation.pptx
ap177979
 
PPTX
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
PPTX
AI at Your Side: Boost Impact Without Losing the Human Touch (SXSW 2026 Meet ...
maytaldahan
 
PPT
1965 INDO PAK WAR which Pak will never forget.ppt
sanjaychief112
 
PPTX
The Latest Scam Shocking the USA in 2025.pptx
onlinescamreport4
 
LB# 820-1889_051-7370_C000.schematic.pdf
matheusalbuquerqueco3
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
UI/UX Developer Guide: Tools, Trends, and Tips for 2025
Penguin peak
 
The Internet of Things (IoT) refers to a vast network of interconnected devic...
chethana8182
 
Data Protection & Resilience in Focus.pdf
AmyPoblete3
 
Google SGE SEO: 5 Critical Changes That Could Wreck Your Rankings in 2025
Reversed Out Creative
 
B2B_Ecommerce_Internship_Simranpreet.pptx
LipakshiJindal
 
The Monk and the Sadhurr and the story of how
BeshoyGirgis2
 
Artificial-Intelligence-in-Daily-Life (2).pptx
nidhigoswami335
 
GEO Strategy 2025: Complete Presentation Deck for AI-Powered Customer Acquisi...
Zam Man
 
Pengenalan perangkat Jaringan komputer pada teknik jaringan komputer dan tele...
Prayudha3
 
办理方法西班牙假毕业证蒙德拉贡大学成绩单MULetter文凭样本
xxxihn4u
 
Introduction to dns domain name syst.ppt
MUHAMMADKAVISHSHABAN
 
原版北不列颠哥伦比亚大学毕业证文凭UNBC成绩单2025年新版在线制作学位证书
e7nw4o4
 
Different Generation Of Computers .pptx
divcoder9507
 
Blue and Dark Blue Modern Technology Presentation.pptx
ap177979
 
dns domain name system history work.pptx
MUHAMMADKAVISHSHABAN
 
AI at Your Side: Boost Impact Without Losing the Human Touch (SXSW 2026 Meet ...
maytaldahan
 
1965 INDO PAK WAR which Pak will never forget.ppt
sanjaychief112
 
The Latest Scam Shocking the USA in 2025.pptx
onlinescamreport4
 
Ad

Js remote conf

  • 1. RabbitMQ + JavaScript JS Remote Conf 2017
  • 2. Presenter Info Bart Wood Distinguished Software Engineer at Henry Schein (medical/dental company) I work on large Single Page Applications for dentists JavaScript + Java-esque Backend Front end + Back end
  • 3. What to talk about? Message Queues and RabbitMQ JavaScript + STOMP to communicate with RabbitMQ Possibilities with this technology
  • 4. Presentation Content Slides here: https://www.slideshare.net/BartWood/js-remote-conf Amusing pictures to compensate for bland slide design
  • 5. Queues are useful Decouple publishers and consumers. Guaranteed (near 100%) message delivery. Publishers and consumers can process at different rates. Auto-scale Asynchronous (scalable) by default. Synchronous is possible. Foundation for service integration. Publisher Queue Magic Consumer
  • 6. RabbitMQ Based on a standard called AMQP (Advanced Message Queuing Protocol (version 0-9-1) Born around 2003 in the financial industry Extremely flexible compared to previous queuing tech
  • 7. RabbitMQ Installation Takes around 15-30 minutes to install RabbitMQ on Linux etc. https://www.rabbitmq.com/install-debian.html How to install Web STOMP for RabbitMQ http://www.rabbitmq.com/blog/2012/05/14/introducing-rabbitmq-web-stomp/ Demos running with RabbitMQ on Ubuntu VM
  • 8. CloudAMQP.com CloudAMQP.com is a hosted Rabbit solution. Easy / no admin or local servers needed. $99+ / month for instance that can use STOMP with JavaScript. Need to use SockJS, native WebSockets not possible for now.
  • 9. RabbitMQ Basics Publisher Java, JavaScript, Etc. Exchange Queue Consumer Java, JavaScript, Etc. Exchanges: Like a DNS routing table, routes message Direct Exchange: Simple Routing Key Topic Exchange: Complex Routing Key publish: keyPartOne.keyPartTwo.keyPartThree consume: keyPartOne.*.* VHost: Like a sandbox in RabbitMQ Auto Delete Queue Routing Key Durable Queue Exclusive Queue Queue .. Exchange … RK Consumer ..Publisher .. Queues can have many consumers. Message only goes to a single consumer. Round robin balancing. Data persisted if no consumers Only a single consumer Deleted when consumer dies Rabbit Cluster
  • 10. JavaScript > RabbitMQ Stack JavaScript code Stomp.js / STOMP protocol Web Sockets / optional SockJS RabbitMQ Server rabbitmq_web_stomp plugin
  • 11. STOMP Protocol Streaming Text Oriented Message Protocol. Basic commands such as CONNECT, SEND, SUBSCRIBE, ETC. Sits on top of Web Sockets (ws or wss) Rabbit also supports MQTT (internet of things) and HTTP(S) Your refrigerator (MQTT) can communicate with your web app (STOMP) via RabbitMQ
  • 12. Stomp.js Very small / simple. http://jmesnil.net/stomp-websocket/doc/ No longer “supported” but it still works very well and it’s simple / small. Supports older STOMP 1.1 but latest STOMP 1.2 isn’t very different Fairly easy to update in the future.
  • 13. SockJS.js (optional) Websockets for older browsers http://caniuse.com/#search=websocket https://github.com/sockjs/sockjs-client CloudAMQP appears to require it. Custom RabbitMQ installs do not.
  • 14. Bunny Draw Demo http://xxx:15670/web-stomp-examples/bunny.html?ws <script src="stomp.js"></script> var ws = new WebSocket('ws://' + window.location.hostname + ':15674/ws'); var client = Stomp.over(ws); var on_error = function() {console.log('error');}; var on_connect = function(x) { client.subscribe('/topic/bunny', function(d) { var point = JSON.parse(d.body); // code omitted … }); }; client.connect(‘guest', ‘guest', on_connect, on_error, '/'); var send = function(data) { client.send('/topic/bunny', {}, data); }; // The security model is only for demo purposes. // Using the default Vhost of ‘/’ // Using a simple routing key of ‘bunny’
  • 15. RabbitMQ STOMP destination header https://www.rabbitmq.com/stomp.html client.send('/topic/bunny‘ … client.subscribe('/topic/bunny‘ … Publish / consume to queues managed by the STOMP gateway: /queue/<simpleRoutingKey> Publish / consume to queues NOT managed by the STOMP gateway: (queues not auto-created) /amq/queue/<simpleRoutingKey> Publish / consume to topics managed by the default exchange “amq.topic”: /topic/< wildCardRoutingKey > Publish / consume to named topic exchanges: /exchange/<topicExchangeName>/<wildCardRoutingKey>
  • 16. Stomp Protocol Headers https://www.rabbitmq.com/stomp.html client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) { // message handler logic here }, {id: 'my-durable-queue', durable: true, 'auto-delete': false}); STOMP Headers can be passed as argument to the Stomp.js functions: connect disconnect subscribe send ack/nack Possible header options: destination, id, durable, auto-delete, reply-to, exclusive Advanced options: x-dead-letter-exchange, x-dead-letter-routing-key, x-expires, x-message-ttl, etc.
  • 17. RabbitMQ Security Anything that can be done with Http can be done with RabbitMQ (with a bit of work). AMQP is simply another protocol like Http. Demo rabbit security settings https://www.rabbitmq.com/access-control.html Delegate security to Web Service (filter before Rabbit handles requests) https://github.com/rabbitmq/rabbitmq-auth-backend-http Custom tokens in headers (like Oauth 2)
  • 18. Demo Topic Exchange / Routing Keys // Auto deleted queue example client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) { console.log(msg.body); }); // Durable queue example. Lost messages will be shown when browser re-connects client.subscribe('/exchange/topic-exchange/keyOne.*', function(msg) { console.log(msg.body); }, {id: 'my-durable-queue', durable: true, 'auto-delete': false});
  • 19. Foundations for an Enterprise Service Bus Other simpler products out there for simple pub/sub over Http WebSync, etc. Same bus / channels to integrate state between servers, browsers, micro-services, third party partners etc.
  • 20. Foundation of Enterprise Service Bus Service A Cluster Service B Cluster Third Party Integration A Third Party Integration B Browser 1 Browser 13,932 Rabbit Cluster Http Load Balancer Replace Http With STOMP

Editor's Notes

  • #6: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #7: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #8: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #9: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #10: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #11: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #12: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #13: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #14: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #15: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #16: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #17: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #18: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #19: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #20: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.
  • #21: Quanity and identity of parties isn’t known. 1 publisher can communicate with 0 to many types of subscribers (one application logic, one logging / auditing logic) In our application, 1 publisher gets routed to many subscribers. Subscribers can be third party applications that demand the data is delivered eventually or they can be single use web browsers.