RxNetty
RxNetty copied to clipboard
require for documentation around how backpressure works
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
I know that BackpressureManagingHandler may help controll the flow in write aspect,but how it works in read aspect?
and I want to know How to use this feature when I want to add a ChannleHandler to the pipeline.
this way?
or this way?
@jamesgorman2 would you please do me a favor?
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()
);