This document discusses the need for a message queueing system that can reliably transmit arbitrary messages between distributed systems in a flexible, scalable, and fast manner. It evaluates several existing inter-process communication standards and implementations like XML-RPC but finds they are not ideal. The document introduces AMQP as a potential solution, explaining that while not originally designed for IPC, its message passing approach could fulfill their needs if implemented properly. It provides a high-level overview of AMQP's use of exchanges to route messages based on routing keys to provide configurable message delivery between systems.
3. What We Need
Some kind of message queueing / IPC
Send data from A to B
send arbitrary messages
distributed
Reliable
Flexible
Scalable
Fast
4. What We Have
Python Twisted XML-RPC
arbitrary data: yes
distributed: yep
Reliable: implementation
Flexible: not really ...
Scalable: well ...
Fast: oh ...
Can we have all that, without implementing everything?
5. far too many IPC standards and implementations out there
not all are distributed
D-Bus
MPI
Signals
some are
XML-RPC (SOAP, ...)
”Sun” RPC
Are any of those reliable?
6. Reliability
What goes in comes out.
It does come out.
It does come out, even if something goes horribly wrong.
If something goes horribly wrong, not everything breaks.
7. AMQP?
Doesn’t look like it was designed for IPC.
So what? IPC is just a special case of message passing.
Does it match our needs?
arbitrary messages, distributed, flexible, scalable, reliable
if the implementation is not slower then the current
XML-RPC, it’s fast enough
Instead of searching for a IPC standard / implementation that
fits our needs, search for AMQP implementation that fits our
needs.
9. Exchanges
a message is send to a exchange
every message has a routing key
the exchange decides, based on the routing key, where to
enqueue it.
fine graned configuration, how messages from A reach B
direct exchange
fanout
topic exchange