Jump to: navigation, search

Difference between revisions of "Zaqar/specs/amqp/api/v1"

m (AMQP Messages)
m (Malini moved page Marconi/specs/amqp/api/v1 to Zaqar/specs/amqp/api/v1: Project Rename)
 
(7 intermediate revisions by one other user not shown)
Line 1: Line 1:
= Marconi AMQP API - v1 Blueprint =
+
= Marconi AMQP Transport v1 =
  
== AMQP Transport ==
+
== Why add support for AMQP ==
  
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 doing in the short term.
+
Having support for more transport protocols would allow us to support a broader set of use-cases.
  
== AMQP Messages ==
+
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.
  
AMQP also has a well defined structure for messages we will be using.
+
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://127.0.0.1:1234
  
 
== Interaction of an AMQP client with the Marconi server ==
 
== Interaction of an AMQP client with the Marconi server ==
  
{| border="1" cellpadding="2" cellspacing="0"
+
{| border="1" cellpadding="8" cellspacing="6"
 
|  '''Marconi operation'''  
 
|  '''Marconi operation'''  
 
|  '''AMQP message'''  
 
|  '''AMQP message'''  
 
|-
 
|-
 
|  Post message  
 
|  Post message  
|  ./client.py amqp://127.0.0.1:8888/poptart/ "Saying hi!" "Yada yada yada"
+
|  ./client.py amqp://127.0.0.1:8888/myqueue/ "Subject" "Message body"
 
|-  
 
|-  
 
|}
 
|}
 
== Publisher/Subscriber ==
 
 
== Producer/Consumer ==
 

Latest revision as of 18:42, 7 August 2014

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