Hello Rabbiteers!<div><br></div><div><br><div>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:</div></div><div><br></div><div>
<meta http-equiv="content-type" content="text/html; charset=utf-8"><a href="https://github.com/BraveSirRobin/amqphp">https://github.com/BraveSirRobin/amqphp</a></div><div><br></div><div>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: <a href="https://github.com/BraveSirRobin/amqphp/raw/master/diag/amqp.png">https://github.com/BraveSirRobin/amqphp/raw/master/diag/amqp.png</a></div>
<div><br></div><div>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:</div><div><br>
</div><div><div><i>Content frames on a specific channel are strictly sequential. That is, they may be mixed with frames for</i></div><div><i>other channels, but no two content frames from the same channel may be mixed or overlapped, nor may</i></div>
<div><i>content frames for a single content be mixed with method frames on the same channel.</i></div></div><div><br></div><div>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?</div>
<div><br></div><div><br></div><div>Many thanks,</div><div>--Robin</div><meta http-equiv="content-type" content="text/html; charset=utf-8">