I had a quick look... A few comments.
1) Your access of PriorityQueue must be synchronized as the downstream event may be fired by any thread.
2) Same needs to be done for nextRequiredSequence or use AtomicInteger which should be better
3) You want to use Channel.close()
The rest looks good