mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hanson Char" <hanson.c...@gmail.com>
Subject Re: Controlling rate of writes in Mina 0.8.2
Date Wed, 13 Sep 2006 05:39:14 GMT
Hi Trustee,

Thanks for the tip.  So does it mean, using the 3 messages/sec example,
something as simple as the code below ?

Hanson

      SocketConnector socketConnector =
                                              new SocketConnector();
      socketConnector.getFilterChain()
            .addLast("writeThrottleFilter",
                           new WriteThrottleFilter(333));

public class WriteThrottleFilter extends IoFilterAdapter
{
    private final long delayMillis;

    public WriteThrottleFilter(long delay) {
        this.delayMillis = delay;
    }

    @Override
    public void filterWrite(NextFilter nextFilter,
            IoSession session, ByteBuffer buf, Object marker) throws
InterruptedException
    {
        Thread.sleep(delayMillis);
        nextFilter.filterWrite( session, buf, marker );
    }
}

On 9/12/06, Trustin Lee <trustin@gmail.com> wrote:
>
> ---------- Forwarded message ----------
> From: Trustin Lee <trustin@gmail.com>
> Date: Sep 13, 2006 1:59 PM
> Subject: Re: Controlling rate of writes in Mina 0.8.2
> To: mina-dev@directory.apache.org
>
> Hi Hanson,
>
> On 9/13/06, Hanson Char <hanson.char@gmail.com> wrote:
> >
> > Hi,
> >
> > A quick question.  Is there an easy way in Mina 0.8.2 to control the
> rate
> > of
> > physical network write operations to not exceeding a specific number of
> > messages ?
> >
> > For example, can I say for a particular socket connection session Mina
> > should write physically no more than 3 messages per second ?  Message
> here
> > means the argument that get passed to session.write(Object).
> >
> > AFAIK the session.write() is a logical asyn operation, and Mina
> therefore
> > reserves the right to buffer it underneath.  If so, controlling the rate
> > of
> > session.write() cannot be relied upon to control the rate of physical
> > messages that get sent down the wire.
> >
> > Or am I mistaken ?
>
>
> You are correct, but you can make session.write() a blocking operation by
> inserting a filter which limits the write rate.  Please implement your
> filter's filterWrite() to throttle the write request.
>
> BTW this idea is nice.  Could you please create a JIRA issue for us so we
> can resolve it someday and you can switch over to our version of write
> rate
> limiting filter?  Otherwise you could contribute! ;)
>
> Trustin
> --
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP key fingerprints:
> * E167 E6AF E73A CBCE EE41  4A29 544D DE48 FE95 4E7E
> * B693 628E 6047 4F8F CFA4  455E 1C62 A7DC 0255 ECA6
>
> --
> what we call human nature is actually human habit
> --
> http://gleamynode.net/
> --
> PGP key fingerprints:
> * E167 E6AF E73A CBCE EE41  4A29 544D DE48 FE95 4E7E
> * B693 628E 6047 4F8F CFA4  455E 1C62 A7DC 0255 ECA6
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message