RxNetty icon indicating copy to clipboard operation
RxNetty copied to clipboard

require for documentation around how backpressure works

Open cytnju opened this issue 6 years ago • 4 comments

I want to lean how backpressure works in RxNetty. Could you please provide such documentation as you mentioned in FAQs? I would appreciate it if you can help me

cytnju avatar Jul 19 '18 04:07 cytnju

I know that BackpressureManagingHandler may help controll the flow in write aspect,but how it works in read aspect?

cytnju avatar Jul 19 '18 09:07 cytnju

and I want to know How to use this feature when I want to add a ChannleHandler to the pipeline. this way? image or this way? image

cytnju avatar Jul 19 '18 09:07 cytnju

@jamesgorman2 would you please do me a favor?

cytnju avatar Jul 20 '18 02:07 cytnju

Hi cynthju, answers below

BackpressureManagingHandler

I didn't write this, so I'm going on my reading of it and my best understanding of TCP. For reading BackpressureManagingHandler delegates its behaviour to AbstractConnectionToChannelBridge.ReadProducer which is an RxJava producer tha handles the backpressure. It will tell BackpressureManagingHandler if it has active read requests, which will pass that to Netty. I guess this then uses native TCP behaviour to tell the writer to stop sending once the local receive buffer is full.

ChannelHandler In this instance the behaviour is identical. The first will always add a new THandler to all connections. If the second can be set up to do it only to some connections, eg:

    TcpServer<ByteBuf, ByteBuf> s = TcpServer.newServer()
      .start(
        newConnection ->
          Math.random() < 0.5 ?
            newConnection.addChannelHandlerLast("TestHandler",new THandler()).ignoreInput() :
            newConnection.ignoreInput()
      );

jamesgorman2 avatar Aug 04 '18 04:08 jamesgorman2