Hello,
I'm looking for a way to add artificial latency to requests and I'm having
trouble finding a way that wouldn't require a blocking pool with 1 thread
per request.
What I would like to happen if possible.
handler marks exchange as not ready (yield / pause)
async runnable from another thread marks it ready to resume after some time
next iteration of IO loop catches that it is ready and actually executes it
now.
public void handle(HttpServerExchange exchange) {
if (firstExecution) {
scheduledExec.schedule(() -> exchange.resume(), duration, unit);
return;
}
next.handle(exchange);
}
Is something like this possible while staying on the IO threads the whole
time other than the ScheduledExecutorService? I was thinking of using
dispatch and dispatching back to the IO executor but I don't think that
will do what I intend.
The end goal would be a way to handle N requests with various delays built
in to simulate latency without blocking connections. For instance if the
worker pool has 30 threads and I submit 100 requests with a 1 minute delay
followed by 1 request with a 10 second delay the final request should come
back first.
Thanks,
Bill