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.

Reply via email to