<div dir="ltr">Hi guys,<div><br></div><div>During the last couple of weeks I've been working on adding support for AMQP 1.0 in Marconi transport. For that, I've based my research on current Marconi WSGI API, Apache Proton API [0] and Azure Service Bus docs [1].</div>

<div><br></div><div>There are several things to decide here in order to take full profit of AMQP's performance while keeping things consistent.</div><div><br></div><div>I'd like to know your opinions about the following.</div>

<div><br></div><div>> Marconi and AMQP operations mapping</div><div><br></div><div>Marconi doesn't follow a strict queue semantic. It provides some more operations that are not supported in other queues implementations, as messages listing, message/s retrieval by id and message/s deletion by id.</div>

<div><br></div><div><div>Also, we don't have different entities to provide publish/subscribe and producer/consumer as other messaging implementations (e.g. in Azure topics are for pub/sub and queues are for prod/cons)<br>

</div><div><br></div><div>Marconi support prod/cons through claims. We rely on clients to send an ack of the message being consumed in order to delete the message and avoid other clients to consume it later.</div></div><div>

<br></div><div>So, the thing is... <b>should we add support for those additional features? how we can do that in order to be consistent with AMQP and avoid confusion?</b></div><div><br></div><div>I drafted two different possibilities</div>

<div><br></div><div>e.g. Delete a message <br></div><div><br></div><div>- Specify the operation in the URI</div><div><br></div><div>./client.py amqp://<a href="http://127.0.0.1:8888/myqueue/messages/id/delete">127.0.0.1:8888/myqueue/messages/id/delete</a></div>

<div><br></div><div>- Specify the operation in the message suject</div><div><br></div><div>./client.py amqp://<a href="http://127.0.0.1:8888/myqueue">127.0.0.1:8888/myqueue</a> {subject: 'DELETE', id: 'id1'}</div>

<div><br></div><div>I'm personally leaning towards the former since it's closer to the way AMQP does things, but again... if we are going to stick to AMQP's semantics then we should be supporting this. Right now the core features should be sending, receiving and claiming messages.</div>

<div><br></div><div>I'll updating some notes about this in <a href="https://wiki.openstack.org/wiki/Marconi/specs/ampq/api/v1">https://wiki.openstack.org/wiki/Marconi/specs/ampq/api/v1</a> (WIP!)</div><div><br></div>
<div>
Thanks,</div><div><br></div><div>VIctoria</div><div><br></div><div>[0] <a href="http://qpid.apache.org/releases/qpid-proton-0.7/protocol-engine/python/api/proton-module.html">http://qpid.apache.org/releases/qpid-proton-0.7/protocol-engine/python/api/proton-module.html</a></div>

<div>[1] <a href="http://msdn.microsoft.com/en-us/library/jj841070.aspx">http://msdn.microsoft.com/en-us/library/jj841070.aspx</a></div></div>