Did you try the method *mergeAll* ?

On Fri, Jul 25, 2008 at 2:13 AM, Johan Haleby <[EMAIL PROTECTED]> wrote:

> Hi,
>
> I'm using Mina to distribute incoming data from a hardware device to many
> connected clients. The incoming data are chunks of bytes representing
> strings. Whenever a new line is detected in a data chunk the row must be
> extracted, several prefixes (depending on the source channel of the
> hardware
> device) must be added to each row and each row must also be persisted to
> the
> file system. Each connected client also passes a regular expression filter
> to the Mina server and only rows matching this filter should be forwarded
> to
> the client. There may potentially be a lot of clients connected to the Mina
> server and the incoming data that should be distributed from the hardware
> device _may_ come at a rate of several Mbit/s. The problem is that the data
> flow from the hardware device differs quite a lot. At times a single row is
> only sent to the Mina server once every minute, at other times it may by
> several Mbits per second as I've previously mentioned. How do I deal with
> this situation? I've read in the forum (
> http://mina.markmail.org/message/k2t5yx7xaztgykcp?q=write+throughput) that
> under heavy load the TextLineEncoder (which I'm using but I've modified it
> slightly) is really quite inefficient because I get LOTS of small objects
> (strings) that should be sent to the client. A better way suggested by that
> thread was to create your own Buffer of, say 64k in size, and just flush
> the
> whole buffer to the write method when its full. I figure that this would
> probably work ok when the load is high but what about when the server only
> receives one message per minute? Should I perhaps have a thread monitoring
> the buffer and perform a flush on it on a given time interval if it's not
> full? Any ideas or suggestions? What write buffer size should I be using? A
> text row is usually about 50 characters long. I'm using Mina 1.1.7.
>
> Thanks
> Johan
>

Reply via email to