Jump to: navigation, search


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)

Address syntax

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://

Interaction of an AMQP client with the Marconi server

Marconi operation AMQP message
Post message ./client.py amqp:// "Subject" "Message body"