Marconi AMQP Transport v1
Why add support for AMQP
Having support for more transport protocols would allow us to support a broader set of use-cases.
AMQP is a standard protocol adopted by other messaging services, so an application written to use AMQP could be run against Marconi even if that was not the original (or only) target.
Also, Marconi could provide store-and-forward capabilities to AMQP.
How is going to be structured?
AMQP has a well-defined transport protocol we will stick to. The current version of the AMQP transport driver won't implement concurrency, but is something we will be adding in the short term.
AMQP also has a structure for messages we will be using.
Since Marconi has some features that are not in other messaging implementations, we decided to keep the 'normal' behavior with AMQP and avoid confusions. This is, we won't add support for message/s retrieval by id or message/s deletion by id, just to mention some. A complete list of what is it going to be supported and what is not will be added here. (WIP)
An address has the following form:
[ amqp[s]:// ] domain [/[name]]
Where domain can be one of:
host | host:port | ip | ip:port | name
The following are valid examples of addresses:
amqp://example.org amqps://example.org amqps://example.org/outgoing amqps://127.0.0.1:1234
Interaction of an AMQP client with the Marconi server
|Marconi operation||AMQP message|
|Post message||./client.py amqp://127.0.0.1:8888/myqueue/ "Subject" "Message body"|