<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
On 08/08/13 00:57, Alan Antonuk wrote:
<blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
type="cite">
<div dir="ltr"><br>
<div class="gmail_extra">
<div class="gmail_quote">On Wed, Aug 7, 2013 at 1:49 PM,
Daniel Pocock <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:daniel@pocock.com.au" target="_blank">daniel@pocock.com.au</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im"><span style="color:rgb(34,34,34)">Does
this mean we need to block and/or use threads to
receive messages?</span><br>
</div>
</blockquote>
<div><br>
</div>
<div>Yes, the state of rabbitmq-c and SimpleAmqpClient when
waiting for a delivery from a consumer is you need to
block, optionally with a timeout.</div>
<div> <br>
</div>
<div>The problem I'm stating is that AMQP has some async
parts to the protocol, and rabbitmq-c doesn't do anything
to handle these events as they're fired from the broker.
They're only 'seen' by rabbitmq-c when synchronous calls
are made.</div>
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><br>
Do you envisage making it work like boost::asio or have
you seen<br>
anything like that for AMQP?<br>
</blockquote>
<div><br>
</div>
<div>A few years back I started to implement a pure C++ AMQP
client library leveraging boost::asio. You can find it
here:</div>
<div><a moz-do-not-send="true"
href="https://github.com/alanxz/libamqp-cpp">https://github.com/alanxz/libamqp-cpp</a><br>
</div>
<div>The project was not completed. I don't have plans to
resume work it.</div>
<div><br>
</div>
<div>Recently I have been doing a bit of design work to see
what would be necessary to create an library that
leverages libuv to make a fully-functional native AMQP
client.</div>
</div>
</div>
</div>
</blockquote>
<br>
Personally, I wouldn't want to favour any of these solutions over
any other, they are all good.<br>
<br>
The most important thing will be demonstrating how it integrates
with higher level code, particularly if the high level code is using
an event loop other than the one you choose yourself. E.g. will the
end user have to run your event loop in a thread and when they get
callbacks from your code, they will have to pass data to their own
event loop thread in a thread-safe manner?<br>
<br>
Another thing that comes to mind is the question of adding an
abstraction layer, just like JMS in the Java world. The only one
I've come across so far is OpenMAMA:<br>
<a class="moz-txt-link-freetext" href="http://www.openmama.org">http://www.openmama.org</a> - do you believe RabbitMQ users could
benefit from coding to the OpenMAMA API and using some low-level
driver for AMQP or RabbitMQ specifically? This would be more like
the JMS programming paradigm.<br>
<br>
<br>
<blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div class="im"><span style="color:rgb(34,34,34)">Did you
collaborate with anybody for the Debian package of the
C client?</span><br>
</div>
<a moz-do-not-send="true"
href="http://packages.debian.org/jessie/librabbitmq-dev"
target="_blank">http://packages.debian.org/jessie/librabbitmq-dev</a><br>
<br>
</blockquote>
<div>That package is very old. People have come to me
time-to-time for assistance in creating a Ubuntu and/or
Debian package, and not having a lot of knowledge in the
process I do what I can to help out. Currently there is
some packaging material in the debian directory of the
rabbitmq-c repo. It is somewhat out of date, though not
as old as what you've linked.</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
I'll contact the maintainers and if they are not actively updating
it, I might volunteer to refresh it<br>
<br>
<br>
<blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div>I personally would like to move the packaging details
out of the repository to allow for different distributions
to come up with their own independent packaging, as each
distribution seems to do things in a slightly different
and incompatible way. If you or someone you know is
willing to step up and help maintain said package, I will
do what I can to help out.</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
Debian often maintains packaging artifacts in git repositories in
alioth these days. When we import your release tarball into our git
repository, we can easily tell it to ignore any debian/ directory
you have. For older versions of Debian this was problematic
though. My own suggestion is that you can include your own debian/
artifacts in your repository if you wish to maintain them, but when
you prepare a release tarball, exclude that subtree.<br>
<br>
<blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Has
anybody discussed a package of the C++ client?<br>
</blockquote>
<div><br>
</div>
<div>I haven't heard of anyone doing so. One roadblock is
that when SimpleAmqpClient was created it used a newer
version of boost than came packaged with the LTS version
of Ubuntu because it needed the boost.chrono library which
was fairly new at the time. I'm not sure if the situation
has changed since then.</div>
<div><br>
</div>
</div>
</div>
</div>
</blockquote>
<br>
I would be aiming to introduce something in Debian unstable to begin
with. From there, it will propagate to other distributions over
time and if those distributions operate commercially (like Ubuntu)
and their clients really want it, they will hopefully collaborate
with you to resolve the problem and contribute fixes for you.<br>
<br>
<blockquote
cite="mid:CAAt2poJ7VRb1dq1ZsEA_Y4jRSqdDRKaKvpnRxMq4dAafVmp-Fw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div>Again if you or someone you know is willing to step up
and help maintain an SimpleAmqpClient package, I will do
what I can to help out.</div>
</div>
<br>
</div>
</div>
</blockquote>
<br>
I'd like to understand your feelings about the future of the API
before committing to that - do you see something based on libuv
happening in the near future, e.g. within 6 months?<br>
<br>
<br>
<br>
</body>
</html>