Configuración del tiempo límite toma en el canal Netty
-
03-10-2019 - |
Pregunta
Tengo un canal netty y me gustaría establecer un tiempo de espera en el zócalo subyacente (que se establece por defecto en 0).
El propósito del tiempo de espera es que el canal no utilizado se cerrará si no pasa nada durante 15 minutos, por ejemplo.
A pesar de que no veo ninguna configuración para hacerlo, y la toma en sí también se me oculta.
Gracias
Solución
Si se utiliza la clase ReadTimeoutHandler, el tiempo de espera puede ser controlada.
siguiente es una cita de Javadoc .
public class MyPipelineFactory implements ChannelPipelineFactory {
private final Timer timer;
public MyPipelineFactory(Timer timer) {
this.timer = timer;
}
public ChannelPipeline getPipeline() {
// An example configuration that implements 30-second read timeout:
return Channels.pipeline(
new ReadTimeoutHandler(timer, 30), // timer must be shared.
new MyHandler());
}
}
ServerBootstrap bootstrap = ...;
Timer timer = new HashedWheelTimer();
...
bootstrap.setPipelineFactory(new MyPipelineFactory(timer));
...
Cuando se causará un tiempo de espera, MyHandler.exceptionCaught (ChannelHandlerContext CTX, ExceptionEvent e) se llama con ReadTimeoutException .
@Override
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e) {
if (e.getCause() instanceof ReadTimeoutException) {
// NOP
}
ctx.getChannel().close();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow