2013-10-14 4 views
0

Я разрабатываю приложение, использующее netty как клиент для подключения к серверу. Требования таковы, что серверу разрешено только одно подключение. Однако это соединение должно иметь возможность сервера как можно большего количества одновременных запросов. Одним из моих решений проблемы является использование BlockingQueue, но пропускная способность не была лучшей. Причина, почему я использовал для блокировки, заключается в том, что она помогает мне легко отвечать на запросы ответа, поскольку архитектура является запросом/ответом.Netty 3.x одно соединение клиента и несколько запросов

Теперь я хотел бы знать, как лучше переписать эту клиентскую сторону для отправки параллельных запросов и получения соответствующего ответа без использования блокировки.

Пожалуйста, помогите мне с любой идеей.

ответ

0

Я бы просто включил уникальное идентификационное сообщение в запрос, который также включен в ответ. Затем в клиенте используйте ConcurrentMap для временного хранения контекстной информации для каждого запроса и использования для сопоставления ответов.

Я также хотел бы скрыть этот механизм за подходящий API:

void sendReceive(Request request, Handler<Response> responseHandler); 
Смежные вопросы