2012-11-02 1 views
2

Netty를 기반으로 HTTP 클라이언트를 만들도록 지정되었지만 몇 가지 어려움이 있습니다.Netty - 같은 channelFactory를 사용합니다. 원인 3 개의 응답 만 처리됩니다.

NIO를 최대한 활용하기 위해 동일한 channelFactory를 사용하고 싶었습니다. 즉, 모든 연결이 동일한 보스 스레드에 의해 처리되고 동일한 작업자 스레드 풀에 할당됨을 의미합니다.

내가 겪고있는 문제는 내가 3 명의 근로자를 사용하면 3 회의 작업 만 수행 한 다음 프로세스가 중단된다는 것입니다.

: 작업자 스레드가 나는 응답을 처리 한 후 채널을 폐쇄에도 불구하고 그것의 다음 과제에 대한 발표되지 않는 것처럼

여기

은 내가 부트 스트랩 나중에 지정 내 정적 ChannelFactory에 정의하는 방법입니다 ... 보인다

static NioClientSocketChannelFactory channelFactory = new NioClientSocketChannelFactory(
      Executors.newFixedThreadPool(1), 
      Executors.newFixedThreadPool(3)); 

답변

1

이유를 발견 - 나는 newCachedThreadPool을 사용해야하고 #Workers가 포함 된 두 번째 생성자를 사용하여 channelFactory를 구성해야합니다.

netty는 cachedPool이 필요합니다. 그렇지 않으면 WI를 다시 사용할 수 없습니다.