2017-07-27 5 views
0

Ich muss mehrere Anfragen mit einer Verbindung (http keep-alive) und ich möchte eine Verzögerung zwischen ihnen hinzufügen. Gerade jetzt in meinem letzten Handler schreibe ich nächsten Httprequest in Kanal nach LastHttpContent aus früheren Anfrage empfangen wird:Wie Zeitplan HttpRequest in Netty-Kanal?

@Override 
public void channelRead0(ChannelHandlerContext ctx, HttpObject msg) { 
    ... 
    if (msg instanceof LastHttpContent) { 
     ... 
     ctx.channel().writeAndFlush(nextHttpRequest); 
     ... 
    } 
} 

Ich nehme an, dass Thread.sleep mit dem ganzen netty Reaktorblock so dass ich für eine richtige Art und Weise bin auf der Suche schreiben zu verzögern im Kanal.

Antwort

1

Sie eine Aufgabe planen können, die Nachricht zu schreiben, um den Testamentsvollstreckers channel mit:

public class ScheduledHttpWriter extends SimpleChannelInboundHandler<HttpObject> { 

    @Override 
    protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Exception { 
     if (msg instanceof LastHttpContent) { 
      ctx.executor().schedule(new Runnable(){ 
       @Override 
       public void run() { 
        ctx.channel().writeAndFlush(outBoundMessage); 
       } 
      }, 1000, TimeUnit.MILLISECONDS); 
     }    
    } 

} 
+0

funktioniert wie ein Charme – AdamSkywalker