Netty: конвейерный вывод одного канала на вход другого

Нетти-Gurus,

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

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

Я заинтересован в том, как достигнуть пункта 3. После моих первых мыслей
// макет messageReceived (ChannelHandlerContext ctx, MessageEvent e):
ChannelBuffer bufIn = (ChannelBuffer) e.getMessage ();
ChannelBuffer bufOut = getClientChannelBuffer (); // Установка в другом месте
bufOut.write(bufIn);

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

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

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

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

1 ответ

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

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

Другие вопросы по тегам