Netty: конвейерный вывод одного канала на вход другого - PullRequest
1 голос
/ 02 декабря 2011

Netty-Gurus,

Мне было интересно, есть ли ярлык / Netty-Utility / smart-trick для подключения входа одного канала к выходу другого канала.Более подробно рассмотрим следующее:

  1. Настройка сервера Netty (http)
  2. Для входящего MessageEvent получает ChannelBuffer
  3. и pipe его вход до a NettyClient- ChannelBuffer (который должен быть настроен вдоль линийNettyServer).

Меня интересует, как достичь пули 3. , так как мои первые мысли оlines
// mock messageReceived (ChannelHandlerContext ctx, MessageEvent e):
ChannelBuffer bufIn = (ChannelBuffer) e.getMessage ();
ChannelBuffer bufOut = getClientChannelBuffer (); // Установка в другом месте
bufOut.write (bufIn);

кажется мне неловким, потому что
A. Я должен определить для каждого и каждого сообщенияReceived-Event целевой ChannelBuffer
B. Слишком низкоуровневое возиться

Мое желание /видение состоит в том, чтобы подключить
-> вход одного канала
-> к выходу другого канала
и позволить им делать свой ввод / вывод без какого-либо дополнительного кодирования.

Заранее большое спасибо !, Traude

PS: Возникла проблема, когда я пытаюсь отправить различные HTTP-запросы на сервер (одну точку входа) на несколько других серверов, в зависимости от входного содержимого (отображение на основе первой строки HTTP-запроса).Очевидно, мне также нужно сделать обратный трюк - передать клиенту обратно на сервер - но я думаю, что это будет похоже на решение вопроса ранее.

1 Ответ

2 голосов
/ 02 декабря 2011

Похоже, вам нужно использовать мультиплексор в вашем бизнес-обработчике. Бизнес-обработчик может иметь карту. С ключом в качестве «первой строки HTTP-запроса» и значением в качестве канала вывода для сервера. Как только вы делаете поиск, вы просто делаете channel.write(channelBuffer);

Также взгляните на tcp туннель Бруно де Карвалью , который может дать вам больше идей о том, как справиться с такого рода требованиями.

...