Вы хотите перевести основанную на событиях модель netty в модель опроса. Простой способ сделать это - создать очередь сообщений:
//import java.util.concurrent.BlockingQueue;
//import java.util.concurrent.LinkedBlockingQueue;
BlockingQueue queue = new LinkedBlockingQueue();
Вам нужно сделать очередь доступной для вашего обработчика в качестве аргумента конструктора, а когда приходит сообщение, вы помещаете его в очередь:
// Your netty handler:
queue.put(message);
На стороне клиента вы можете опросить очередь на наличие сообщений:
// The polling loop in your program:
message = queue.poll(5, TimeUnit.SECONDS);
BlockingQueue
предлагает вам выбор между ожиданием прибытия сообщения (take()
), ожиданием определенного времени прибытия сообщения (poll(long, TimeUnit)
) или простой проверкой того, доступно ли какое-либо сообщение прямо сейчас (poll()
).
С точки зрения дизайна, этот подход убивает неблокирующее преимущество ввода-вывода, которое должен дать вам netty. Вы могли бы использовать обычное Socket
соединение для того же результата.