[rabbitmq-discuss] AMQP library APIs

Michael Klishin mklishin at gopivotal.com
Wed Aug 7 21:11:09 BST 2013


Alan Antonuk:

> A question for the authors of AMQP client libraries: if you could change the the public API to your library, what would you change? (and why?).

I wouldn't change much of the public API but have some recommendations about what clients
should focus on (according to me).

In most AMQP 0-9-1 clients at the moment, the single most painful thing is
network failure recovery. I believe this is not a trivial matter (protocol state does isn't helping, too), and will be harder to get right in
C and C++, but at the moment, most clients in garbage collected languages
don't even try.

amqp gem, Bunny serve as good examples of how it can be made much easier
for common cases. I hope to make HotBunnies and Langohr support the same
automatic recovery process fairly soon.

Hopefully some time after that there will be enough evidence to consider
adding the same set of features to Java and .NET clients, as well as Pika and amqp.node.

Some clients try to introduce their own abstractions to be more convenient. It's OK as long
as they are clearly documented and you still know how to access every protocol feature
there is.

So, expose the protocol as it is and make it as easy as possible to recover from network
failures. Then document it well.

HTH.
--
MK

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20130808/93f6508f/attachment.pgp>


More information about the rabbitmq-discuss mailing list