We have a similar problem with very large messages > 1MB and built a stream over them so that whenever the buffer hits 20KB it flushes the message to the client with a header indicating there's more. That allows the client to construct a stream on their queue and read the response in 20KB chunks. Not only does this get around the problem you describe, but the messages exchanged in smaller chunks makes the application a better network citizen.
-- Visit <http://tggagne.blogspot.com/>,<http://gagne.homedns.org/> or <http://gagne.homedns.org/~tgagne/> for more great reading.