I am currently implementing Large Message support for AMQP Messages. There's currently no support for Large Messages in AMQP, although I have recently implemented a dum copy and convert, but if you send a large message, say with 1 G, the whole body would be read into memory before a conversion to AMQP.. what won't fit in most cases of course. (even so I can always make a case where it wouldn't fit).
LargeMessages are always converted as Core currently. With this change they will be kept as AMQP all the way through, adding full support for large messages, which is nice! Anyway... the design I got so far is the following: - LargeServerMessageImpl will delegate its implementation to another class called LargeMessageBody - LargeMessageBody would then be used by AMQPMessage when incomplete messages are sent through the wire. - When sending messages on the server, I will use sender.send multiple times until the whole buffer is read. I'm not 100% sure qpid.Proton will work fine with that approach. I will start with that, and deal with further bugs if they come along. - When receiving messages on the server. Messages are marked as incomplete. So, I will create the file using the LargeMessageBody. on that case I will just use the current recv method we already have available on Proton multiple times. This seems to work fine already.
