The Enterprise Message API input buffer is created as one large continuous block of memory, controlled by NumInputBuffers configuration parameter in Channel or Server group. The number of bytes created in the input buffer is determined by the configured value multiplied by the negotiated maxFragmentSize. Having one large block of memory allows dispatch call to get as many bytes from a single call to the underlying transport as possible. When the input buffer holds data, the Enterprise Message API determines message boundaries and returns a single message to the user. As the application makes subsequent dispatch calls, additional messages are dispatched from the input buffer. After fully processing the input buffer, the Enterprise Message API goes back to the underlying transport to again fill the input buffer.
The intent is to have the Enterprise Message API read only when needed and to read as much as possible. The amount of data the Enterprise Message API actually reads from the network depends on the number of input buffers and the amount of data that the OS has available at that time.