[rabbitmq-discuss] New open source PHP Amqp implementation

Matthew Sackman matthew at rabbitmq.com
Sat Jan 8 14:20:49 GMT 2011

On Sat, Jan 08, 2011 at 01:46:39PM +0000, Robin Harvey wrote:
> 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?

Your interpretation of the spec is correct, and yes, these interleavings
are legal.

> 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?

The spec does not guarantee this. We happen to have implemented it this
way in the past, but we spotted this recently and it's already been
changed on the default branch - thus if you compile from source and send
suitably large messages (or negotiate a small frame size) you should now
be able to see this readily enough.

Good to see another implementation coming out.

Best wishes,


More information about the rabbitmq-discuss mailing list