I can see the Netty selector timeout is 500.
I'm wondering if this can be interrupted at close to speed up the shutdown?
Calling ExecutorService.shutdownNow() for all ExecutorServices you specified to the constructor of ChannelFactory (i.e. NioClientSocketChannelFactory) should solve the problem. If it doesn't work, let me know.