[rabbitmq-discuss] New open source PHP Amqp implementation

Robin Harvey harvey.robin at gmail.com
Sat Jan 8 13:46:39 GMT 2011

Hello Rabbiteers!

I hope I'm not being importune by posting this message to let you know about
an LGPL Amqp implementation I've recently written for PHP 5.3:


I've implemented the 0.9.1 Amqp spec using a code-generation approach.  If
any of the more experienced Amqp people were able to take a quick look at my
code in order to provide feedback, or have any other advice I'd be very
grateful.  There's a UML class diagram showing the implementation classes
here: https://github.com/BraveSirRobin/amqphp/raw/master/diag/amqp.png

Secondly, I have a question regarding using basic.consume on multiple
channels.  Is it possible for message frames to be mixed up for
basic.consume?  Section 4.2.6 of the spec says this:

*Content frames on a specific channel are strictly sequential. That is, they
may be mixed with frames for*
*other channels, but no two content frames from the same channel may be
mixed or overlapped, nor may*
*content frames for a single content be mixed with method frames on the same

What I find confusing is that a single "message" consists of a frame header,
a content header and one or more content frames, for large messages there
can be many content frames; a single message contains many frames.  For
example, is it possible to get a content header frame on channel A, then a
content header frame on channel B, then the message content for channel A,
then the message content for channel B?  The testing I've done so far
indicates that RMQ always sends basic.deliver messages sequentially - it
sends the content header then all content frames for a single message on a
single channel in a non-interleaved fashion.  Is this always the case?  Is
this what the spec guarantees?

Many thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/attachments/20110108/c4db6a57/attachment.htm>

More information about the rabbitmq-discuss mailing list